1. 程式人生 > >MFC,線上程中建立對話方塊

MFC,線上程中建立對話方塊

UINT CTestDlgDlg::ThreadFunc(PVOID pv)
{

//模態對話方塊
//  CAboutDlg dlg;
//  dlg.DoModal();

//非模態對話方塊
  CTestDlgDlg *Testdlg = (CTestDlgDlg*)pv; 
  CDlgThread *dlg = new CDlgThread;
 dlg->Create(IDD_DIALOG1);
 Testdlg->m_MFCThreadHwnd = dlg->m_hWnd;
 Testdlg->dlg = dlg;
 dlg->ShowWindow(SW_SHOW);

 //The message loop   
    MSG msg;
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

 dlg->DestroyWindow();
 delete dlg;
 Testdlg->dlg = NULL;
 TRACE(_T("釋放對話方塊"));
 return 0;
}
void CTestDlgDlg::OnButton4()
{
 // TODO: Add your control notification handler code here
 m_MFCThreadWnd = AfxBeginThread((AFX_THREADPROC)ThreadFunc,this);
 
}

線上程中建立視窗的重點在於,訊息迴圈必須要跟建立視窗在同一執行緒;但是如果你是線上程中建立的是模態視窗的話,就不需要了