VS2019, MFC 模态对话框与非模态对话框

本文介绍了在VS2019中使用MFC创建模态和非模态对话框的过程。模态对话框在显示时会暂停应用程序,直到关闭;而非模态对话框允许用户同时操作其他窗口。创建对话框涉及资源视图中的IDD_DIALOG1添加,及菜单项与事件处理程序的关联。模态对话框的关闭通常通过OnOK或OnCancel成员函数处理,而非模态对话框需要重写OnOK并调用DestroyWindow来销毁窗口。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值