我有一個由一個窗體組成的控制檯MFC窗體應用程序。在MFC應用程序構造器線程與任務開始:在單獨線程中的MFC窗體
CfbSrvApp::CfbSrvApp()
{
AfxBeginThread(MTServerThread,0);
}
MTServerThread
過程有時需要顯示簡單的文本輸入或yes/no形式。
如何在單獨的MTServerThread
中創建MFC窗體。
主窗體有時可以最小化爲托盤,但輸入窗體無論如何都應該出現在桌面上。
我有一個由一個窗體組成的控制檯MFC窗體應用程序。在MFC應用程序構造器線程與任務開始:在單獨線程中的MFC窗體
CfbSrvApp::CfbSrvApp()
{
AfxBeginThread(MTServerThread,0);
}
MTServerThread
過程有時需要顯示簡單的文本輸入或yes/no形式。
如何在單獨的MTServerThread
中創建MFC窗體。
主窗體有時可以最小化爲托盤,但輸入窗體無論如何都應該出現在桌面上。
主要形式有時可以被最小化到托盤,但是輸入表格應該 無論如何都出現在桌面上。
爲了達到目的,最好在主線程本身中創建無模式對話框。讓後臺服務器線程通過向主線程發送消息來更新無模式對話框的UI。這樣,您可以最小化托盤中的主窗體,但仍顯示無模式對話框。
感謝您的回答!如何將消息從服務器線程發送到主窗體? – vico
請參閱常見問題解答12:http://vcfaq.mvps.org/mfc/index.htm –
創建無模式對話框並通過void * data參數將其句柄(HWND)提供給服務器線程。使用PostMessage或SendMessage將消息從服務器線程發送到無模式對話框。小心你想要無模對話進行處理的數據。即使在PostMessage返回後,數據應該可用於服務器線程,因爲它將立即發佈並返回。 –