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