接收 MFC 对话框的 PostMessage 消息
Posted
技术标签:
【中文标题】接收 MFC 对话框的 PostMessage 消息【英文标题】:Receive PostMessage messages for MFC Dialog 【发布时间】:2013-08-22 16:10:06 【问题描述】:我有一个对话框,用户可以在其中输入信息,然后按“开始”按钮。当他们按下这个按钮时,我禁用表单元素(按钮等)并使用AfxBeginThread( ... )
创建一个工作线程。一旦工作线程完成,我希望它向 UI 线程发送一条消息,以便重新启用表单。我正在使用::PostMessage( ... )
发送消息,但我找不到如何拦截这些消息。
我在网上搜索过(Link #1、Link #2、Link #3),但我找不到一个可以理解的代码示例来实现我自己的消息监听器。在标题中,我可以看到一些疯狂的定义语句(以DECLARE_MESSAGE_MAP()
开头),看起来可能与它有关,但我无法弄清楚。
非常感谢任何帮助。谢谢。
【问题讨论】:
确保使用WM_APP
范围内的消息。
【参考方案1】:
消息映射是一个表格。对于您感兴趣的每条消息,它都包含消息和指向消息处理函数的函数指针。要将自定义消息添加到地图,您需要将 ON_MESSAGE 条目添加到表中。从工作线程执行此操作的教程示例如下:
http://vcfaq.mvps.org/mfc/12.htm
【讨论】:
我发现 msdn.microsoft.com/en-us/library/k35k2bfs.aspx 并且您链接到的文章相信有错误。它使用UINT
和LONG
,它应该使用WPARAM
和LPARAM
。我链接到的 MSDN 文章有效。不过感谢您的帮助。以上是关于接收 MFC 对话框的 PostMessage 消息的主要内容,如果未能解决你的问题,请参考以下文章
MFC SendMessage和PostMessage 区别
MFC中使用PostMessage和SendMessage函数