将消息发布到模型对话框

时间:2014-04-10 12:24:23

标签: c++ visual-c++ mfc

我打算创建无模式对话框并从另一个线程接收消息。根据我对创建无模式对话框的理解,我需要在CWinThread派生类对象中创建CWinThread和一些框架或对话框。但我真的需要创建框架/对话框吗?为什么我不能直接将消息发布到CWinThread派生类对象?

3 个答案:

答案 0 :(得分:2)

您不需要对话框来接收消息,但您需要一个窗口句柄。该窗口句柄不需要与视觉效果相关联。我认为你需要的只是一个消息窗口。

在MFC中,您可以使用CWnd方法使用CreateEx创建仅限消息的窗口。将HWND_MESSAGE传递给hWndParent的{​​{1}}参数。

确实可以创建一个隐藏的无模式对话框来接收消息。然而,这非常浪费。更重要的是,MFC的设计理念是在主UI线程中创建对话框。因此,出于多种不同的原因,您确实希望避免创建一个对话框,以便在线程中接收消息。使用仅消息窗口。

答案 1 :(得分:0)

消息处理程序向Window处理程序发布/发送消息,因此您需要一个占位符窗口来接收该消息并根据需要进行处理。

答案 2 :(得分:0)

可以使用PostThreadMessage将消息发布到CWinThread派生对象。但是在某些情况下这很危险,在这里讨论:

http://www.codeproject.com/Articles/225755/PostThreadMessage-Demystified