比如有一個函數test(),怎么用SendMessage觸發它啊!下面一段話是我在網上找到的,我遇見了同樣的問題,想試試它的方法我在線程里調用一個函數test()test里有調用對話框domadal一運行到這個就出現錯誤,程序意外終止,domodal不出現!test里的代碼CDlginput;if(input.DoModal()!=IDOK).................把tset改成消息響應函數也不行.domodal窗口能出現點確定按鈕之后出錯!在線程里怎么才能調用domodal???? ________________________________________答:這種用工作線程不好搞一樣,用界面線程,應該可以吧 ________________________________________答:我把test函數改成消息響應函數了用SendMessage觸發test函數試了幾次不出錯了.不知道為啥在線程里直接調用test函數為啥出錯我是用MFC做的,希望是能夠說的具體一點,初學者,沒辦法……
1 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
初學者經常犯得錯誤,就是在一個線程中調用如AfxMessageBox的對話框,這樣你的線程就死了。
在線程中,你必須向一個窗口發送一個消息,那個窗口接收到消息后,讓它去掉用DoModal之類的函數。
你可以在CreateThread,將那個窗口的 m_hWnd當成LPVOID lpParameter,
傳遞進去,那么在DWORD WINAPI ThreadProc( LPVOID lpParameter );的lpParameter 就是那個窗口句柄了。這樣你就可以向那個窗口SendMessage了。
- 1 回答
- 0 關注
- 303 瀏覽
添加回答
舉報
0/150
提交
取消