分类: C/C++
2011-12-26 15:49:46
从个人非常简单的理解就是:模态对话框,只能执行当前弹出的对话框。非模态对话框,既可以执行当前弹出的对话框,也可以执行其他对话框。首先利用MFC向导建立一个基于对话框的工程:TestDlg, 然后分别插入两个不同对话框:IDD_DIALOGONE和
IDD_DIALOGTWO,并利用类向导关联起不同的类:CTestOne和CTestTwo,接着就在主对话框添加两个不同的按钮,才能实现点击按钮弹出对话框,即弹出模态对话框或者非模态对话框。
模态对话框按钮响应函数:
void CTestDlgDlg::OnButtonOne()
{
CTestOne dlg;
dlg.DoModal(); //模态对话框
}
非模态对话框按钮响应函数:
void CTestDlgDlg::OnButtonTwo()
{
CTestTwo *pdlg=new CTestTwo;
pdlg->Create(IDD_DIALOGTWO,this);
pdlg->ShowWindow(SW_SHOW);
}
分析:
CTestDiaLog *pdlg=new CTestDiaLog; //非模式对话框,
不能定义局部变量dlg,在视类里的析构函数里调用delete函数来释放这个指针变量所指向的那块内存
pdlg->Create(IDD_DiaLogOne,this);
pdlg->ShowWindow(SW_SHOW); //非模式对话框,必须调用ShowWindow函数来显示对话框