模态对话框(model dialog box)
在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。
点击模态对话框中的OK按钮,模态对话框会被销毁。
创建一个模态对话框的代码:
//创建一个模态对话框
UINT _cdecl CvccDlg::ThreadProc(LPVOID lpParameter) {
CvccDlg *pThisDlg = (CvccDlg*)lpParameter;
CTESTDlg dlg;
dlg.DoModal(); //模态对话框的弹出(阻塞),只有线程函数返回了,DoModal()退出了,才会继续向下走。但在工作线程不建议使用这种方法
return 0;
}
void CvccDlg::OnBnClickedBtn()
{
m_Num = 123;
CWinThread *pThread = AfxBeginThread(ThreadProc, this); //工作线程,不涉及界面的操作:数据的处理,网络通信等
}
不建议在工作线程创建模态的对话框:虽然模态对话框有自己的消息循环,会成功弹出。但可能会引发异常,因为工作线程与界面线程上下文不同。