打开 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 是不可见/隐藏的?