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);
 
}

 

在线程中创建窗口的重点在于,消息循环必须要跟创建窗口在同一线程;但是如果你是在线程中创建的是模态窗口的话,就不需要了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值