2014-04-09 61 views
0

我有一個由一個窗體組成的控制檯MFC窗體應用程序。在MFC應用程序構造器線程與任務開始:在單獨線程中的MFC窗體

CfbSrvApp::CfbSrvApp() 
{ 
AfxBeginThread(MTServerThread,0); 
} 

MTServerThread過程有時需要顯示簡單的文本輸入或yes/no形式。

如何在單獨的MTServerThread中創建MFC窗體。

主窗體有時可以最小化爲托盤,但輸入窗體無論如何都應該出現在桌面上。

回答

0
  1. 從CWinThread派生一個類。
  2. 覆蓋的InitInstance
  3. 創建對話框有與的DoModal已知
  4. 創建AfxBeginThread和RUNTIME_CLASS(CYourNewCWiNThreadClass)新線程
0

主要形式有時可以被最小化到托盤,但是輸入表格應該 無論如何都出現在桌面上。

爲了達到目的,最好在主線程本身中創建無模式對話框。讓後臺服務器線程通過向主線程發送消息來更新無模式對話框的UI。這樣,您可以最小化托盤中的主窗體,但仍顯示無模式對話框。

+0

感謝您的回答!如何將消息從服​​務器線程發送到主窗體? – vico

+0

請參閱常見問題解答12:http://vcfaq.mvps.org/mfc/index.htm –

+0

創建無模式對話框並通過void * data參數將其句柄(HWND)提供給服務器線程。使用PostMessage或SendMessage將消息從服​​務器線程發送到無模式對話框。小心你想要無模對話進行處理的數據。即使在PostMessage返回後,數據應該可用於服務器線程,因爲它將立即發佈並返回。 –