2010-11-02 23 views
0

我有一個MFC事件。 我聲明如下: const UINT WM_SECEVENT = RegisterWindowMessage(_T(「My Event」)); 我通過以下方式提出事件: :: PostThreadMessageA(dwCurThreadId,WM_SECEVENT,(WPARAM)pMsgParam,0); 在我的MessageMap中,我寫道: ON_REGISTERED_THREAD_MESSAGE(WM_SECEVENT,OnThreadSecEvent);當afxMessageBox打開時,mfc事件不會被調用

一切正常,當WM_SECEVENT引發時,OnThreadSecEvent開始運行。 問題是,我也有一個是/否afxMessageBox。當afxMessageBox正在運行時,我的程序不會「捕捉」事件,並且OnThreadSecEvent沒有被調用。 我該如何解決這個問題?

感謝

回答

0

是否張貼在線程,而不是爲你的目的線程消息隊列本身工作的窗口?

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

不是使用PostThreadMessage發佈消息到UI線程相反,使用PostMessage的發佈消息,由線程擁有一個窗口。由於指向窗口的消息可以通過輔助消息循環分派,因此即使線程未在主消息循環中運行,消息仍然可以正確處理。

相關問題