MFC:论模式对话框和非模式对话框
作者:互联网
一.对话框的分类
Windows的对话框分为两类:模态对话框和非模态对话框
模态对话框:当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框相应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互
非模态对话框:当它弹出后,本程序其他窗口仍能响应用户输入,非模态对话框一般用来显示提示信息等
MFC将模式和非模式对话框的功能都封装在CDialog类中
二.创建对话框
在用VS创建对话框模板的时候,会自动生成两个cpp,分别是MfcDlgTest.cpp和MfcDlgTestDlg.cpp
MfcDlgTest.cpp是框架类,通过InitInstance()来调用MfcDlgTestDlg.cpp,
MfcDlgTestDlg.cpp是主要的显示(渲染视图)类
三.弹出模态对话框
弹出对话框比较关键的一个函数就是对话框类的DoModal(),它可以用来显示一个模态对话框.其返回值对应于用来关闭对话框的控件ID.(要显示一个非模态对话框,可以用Create()来代替DoModal())
//DoModal()调用层次 CMyDialog::DoModal() CMyDialog::OnInitDialog() CDialog::OnInitDialog() CWnd::UpdateData(false) CMyDialog::DoDataExchange()
//Example void CTestDlg::OnBnClickedBtnAdd(){ INT_PTR nRes; //用来保存DoModal函数的返回值 CTestDlg testDlg; nRes=testDlg.DoModal(); //弹出对话框 if(IDCANCEL==nRes) return; }
四.弹出非模态对话框
//Example CDiglog7* pDlg=new CDiglog7; //创建非模态对话框实例 pDlg->Create(IDD_DIALOG7,this); //pDlg->Create(IDD_CHAT_DLG);//父窗口是m_pMainWnd所指定的对象 //pDlg->Create(IDD_CHAT_DLG, GetDesktopWindow());//不依赖与其他窗口,独立的窗口 pDlg->ShowWindow(SW_SHOW); //显示非模态对话框
标签:模态,MFC,对话框,Create,模式,pDlg,cpp,DoModal 来源: https://www.cnblogs.com/k5bg/p/11127424.html