我有一个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。 我该如何解决这个问题?
由于
答案 0 :(得分:0)
发布到线程中的窗口而不是线程消息队列本身是否适用于您的目的?
http://support.microsoft.com/kb/183116
使用PostMessage将消息发布到该线程拥有的窗口,而不是使用PostThreadMessage将消息发布到UI线程。由于可以通过辅助消息循环调度指向窗口的消息,因此即使线程未在其主消息循环中运行,消息仍可正确处理。