打开 afxMessageBox 时未调用 mfc 事件

Posted

技术标签:

【中文标题】打开 afxMessageBox 时未调用 mfc 事件【英文标题】:mfc event doesn't get called while afxMessageBox is open 【发布时间】:2010-11-02 06:54:34 【问题描述】:

我有一个 MFC 事件。 我这样声明: const UINT WM_SECEVENT = RegisterWindowMessage(_T("我的事件")); 我通过以下方式提出事件: ::PostThreadMessageA(dwCurThreadId, WM_SECEVENT, (WPARAM)pMsgParam,0); 在我的 MessageMap 中,我写道: ON_REGISTERED_THREAD_MESSAGE(WM_SECEVENT, OnThreadSecEvent);

一切正常,当 WM_SECEVENT 引发时,OnThreadSecEvent 开始运行。 问题是,我也有一个是/否 afxMessageBox。在 afxMessageBox 运行时,我的程序不会“捕获”该事件,并且不会调用 OnThreadSecEvent。 我该如何解决这个问题?

谢谢

【问题讨论】:

【参考方案1】:

发布到线程中的窗口而不是线程消息队列本身是否适合您的目的?

http://support.microsoft.com/kb/183116

与其使用 PostThreadMessage 将消息发布到 UI 线程,不如使用 PostMessage 将消息发布到该线程拥有的窗口。由于定向到窗口的消息可以由辅助消息循环分派,因此即使线程未在其主消息循环中运行,消息仍能得到正确处理。

【讨论】:

以上是关于打开 afxMessageBox 时未调用 mfc 事件的主要内容,如果未能解决你的问题,请参考以下文章

为啥在按下 Alt 之前我的 AfxMessageBox 是不可见/隐藏的?

afxmessagebox和messagebox

AfxMessageBox与MessageBox用法与区别

MFC 工作线程在意外关闭时未清理

MFC中文档类的 OnOpenDocument是怎样打开文件的呢?

MFC获取Windows启动状态(正常启动安全模式启动网络安全模式启动)