- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
模态对话框
概念
-
模态对话框:是一种对话框,它在显示时会暂停应用程序的主线程,直到用户关闭对话框。
-
用途:常用于需要用户输入或确认某些操作的场景,如文件打开、保存对话框等。
流程
-
创建对话框资源:在Visual Studio中,通过资源视图创建一个新的对话框资源。
-
添加对话框类:为对话框资源创建一个对应的对话框类,通常继承自
CDialogEx
或CDialog
。 -
实例化对话框类:在需要弹出对话框的地方,创建对话框类的一个实例。
-
调用DoModal:使用
DoModal
函数显示对话框。这个函数会阻塞调用它的线程,直到对话框被关闭。 -
处理返回值:
DoModal
函数返回一个整数值,表示用户关闭对话框时按下的按钮(如IDOK或IDCANCEL)。
拓展
-
DoModal函数:是显示模态对话框的关键函数,它负责对话框的初始化、显示和销毁。
-
返回值处理:根据
DoModal
的返回值,可以判断用户是如何关闭对话框的,从而执行不同的操作。 -
初始化:在
DoModal
调用期间,对话框会进行初始化,包括设置控件的初始状态和值。 -
用户交互:用户可以在对话框中进行输入和选择,这些操作会触发相应的事件处理函数。
-
关闭:用户通过点击按钮(如OK或Cancel)关闭对话框,对话框会执行清理操作并返回。
示例代码
-
添加对话框资源
-
设置添加对应类
-
void CMainDlg::OnBnClickedButton7() { CDlg1 dlg; dlg.DoModal(); }
非模态对话框
概念
-
非模态对话框:与模态对话框不同,非模态对话框在显示时不会阻塞应用程序的其他操作,用户可以同时与对话框和其他窗口交互。
-
用途:常用于需要长时间显示的对话框,如属性设置、查找替换等。
流程
-
创建对话框资源:在Visual Studio中,通过资源视图创建一个新的对话框资源。
-
添加对话框类:为对话框资源创建一个对应的对话框类,通常继承自
CDialog
或CDialogEx
。 -
实例化对话框类:在需要显示对话框的地方,创建对话框类的一个实例。
-
调用Create:使用
Create
函数创建对话框窗口,但此时对话框不会立即显示。 -
调用ShowWindow:使用
ShowWindow(SW_SHOW)
函数显示对话框。
拓展
-
对话框类:每个对话框资源通常对应一个对话框类,用于处理对话框的生命周期和事件。
-
基类选择:
CDialogEx
提供了更多的样式和功能,而CDialog
是更传统的基类。 -
创建:使用
Create
函数创建对话框窗口,对话框对象会保持活动状态,直到被显式销毁。 -
显示:使用
ShowWindow
函数显示对话框,对话框可以与其他窗口同时交互。 -
销毁:当不再需要对话框时,应调用
DestroyWindow
函数销毁对话框窗口,并确保对话框对象被正确删除。
示例代码
-
添加对话框资源
-
添加对话框类型
-
主对话框类中添加对应成员
-
主对话框类构造函数初始化类对象
-
CMainDlg::CMainDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_MFCAPP_DIALOG, pParent) { // INITINFO m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_dlg2.Create(IDD_DIALOG2); } void CMainDlg::OnBnClickedButton8() { // TODO: 在此添加控件通知处理程序代码 m_dlg2.ShowWindow(SW_SHOW); }