簡體   English   中英

為什么不能在一個線程中創建對話框並在另一個線程中處理其消息?

[英]Why can't I create a dialog in one thread and deal with its message in another thread?

我做了這樣的事情:

線程1:

pDlg = new CAxDialogImpl<A>();
// start thread2 here

線程2:

pDlg->Create();

while(GetMessage(&msg, 0, 0, 0) > 0)
{
 ...
}

這樣的代碼會導致崩潰。 有沒有人能解釋一下為什么?

這取決於基礎窗口(HWND)的創建位置。 如果CAxDialogImpl構造函數創建窗口,則它將駐留在線程1上,並且無法在線程2上處理該消息。如果CAxDialogImpl :: Create()方法創建了HWND,則它將駐留在線程2上並且消息可能很愉快在那里處理。

實際的崩潰發生在哪里?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM