1. 模态对话框 显示时,应用程序被暂停,只有模态对话框关闭了 才能操作其他应用.
2. 非模态对话框 显示时 其他程序仍然可以运行。
3. 首先建立一个对话框
3.1 在资源视图 右键Dialog 增加一个IDD_DIALOG1
3.2 右键 Dialog面板 为其增加CDialog 类CTestDlg
4. 增加菜单项,用于当点击菜单项时候 弹出新建的 对话框。设为非Popup类型,ID:ID_DIALOG
4.1 右键子菜单 ”对话框“ ,为其添加“事件处理程序(A)...”。把OnDialog放到view类中处理。
4.2 把CtestDlg.h 头文件放到view 类CPP 文件中,这样view CPP中就能找到CtestDlg。并在生成的OnDialog函数中增加语句:
void CSunXinjiaocheng07View::OnDialog()
{
// TODO: 在此添加命令处理程序代码
/*模态对话框创建
CTestDlg dlg;
dlg.DoModal();//程序执行到此处,将停止。直到对话框关闭。
*/
//非模态对话框,需要用其成员create来创建
CTestDlg* dlg = new CTestDlg();//从对空间创建一个CTestDlg类,以解决程序退出类销毁问题。当然也可以给view类增加一个CTestDlg 成员.
//这里并将为做Destory处理,请注意!
dlg->Create(IDD_DIALOG1, this);//创建非模态对话框
dlg->ShowWindow(SW_SHOW);//不调用显示是不会显示模态对话框的。
}
5. 对于模态对话框点击OK时,创建的窗口随类消失。而非模态对话框则不会。所以需要用(重写)虚函数OnOK成员函数,当点击OK按钮 就去调用DistroyWindow去销毁窗口。
注意:提供相关类函数说明
MFC Library Reference |
CDialog::DoModal |
Example See Also Send Feedback |
Call this member function to invoke the modal dialog box and return the dialog-box result when done.
virtual INT_PTR DoModal( ); |
Return Value
An int value