接收 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 并且您链接到的文章相信有错误。它使用UINTLONG,它应该使用WPARAMLPARAM。我链接到的 MSDN 文章有效。不过感谢您的帮助。

以上是关于接收 MFC 对话框的 PostMessage 消息的主要内容,如果未能解决你的问题,请参考以下文章

MFC之实现无边窗口移动

MFC PostMessage SendMessage

MFC SendMessage和PostMessage 区别

MFC中使用PostMessage和SendMessage函数

MFC发送自定义消息-PostMessage和SendMessage

关于MFC对话框程序如何接收命令行传递过来的参数问题