将消息发布到模型对话框

Post messages to model dialog

本文关键字:模型 对话框 消息      更新时间:2023-10-16

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

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

在MFC中,您可以使用CWnd使用CreateEx方法来创建仅消息窗口。将HWND_MESSAGE传递给CreateExhWndParent参数。

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

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

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

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