Windows图形界面(GUI)-MFC-C/C++ - 模态对话框&非模态对话框

目录

模态对话框

概念

流程

拓展

示例代码

非模态对话框

概念

流程

拓展

示例代码


模态对话框

概念

  • 模态对话框:是一种对话框,它在显示时会暂停应用程序的主线程,直到用户关闭对话框。

  • 用途:常用于需要用户输入或确认某些操作的场景,如文件打开、保存对话框等。

流程

  • 创建对话框资源:在Visual Studio中,通过资源视图创建一个新的对话框资源。

  • 添加对话框类:为对话框资源创建一个对应的对话框类,通常继承自CDialogExCDialog

  • 实例化对话框类:在需要弹出对话框的地方,创建对话框类的一个实例。

  • 调用DoModal:使用DoModal函数显示对话框。这个函数会阻塞调用它的线程,直到对话框被关闭。

  • 处理返回值:DoModal函数返回一个整数值,表示用户关闭对话框时按下的按钮(如IDOK或IDCANCEL)。

拓展

  • DoModal函数:是显示模态对话框的关键函数,它负责对话框的初始化、显示和销毁。

  • 返回值处理:根据DoModal的返回值,可以判断用户是如何关闭对话框的,从而执行不同的操作。

  • 初始化:在DoModal调用期间,对话框会进行初始化,包括设置控件的初始状态和值。

  • 用户交互:用户可以在对话框中进行输入和选择,这些操作会触发相应的事件处理函数。

  • 关闭:用户通过点击按钮(如OK或Cancel)关闭对话框,对话框会执行清理操作并返回。

示例代码

  • 添加对话框资源

  • 设置添加对应类

  • void CMainDlg::OnBnClickedButton7()
    {
    	CDlg1 dlg;
    	dlg.DoModal();
    }

非模态对话框

概念

  • 非模态对话框:与模态对话框不同,非模态对话框在显示时不会阻塞应用程序的其他操作,用户可以同时与对话框和其他窗口交互。

  • 用途:常用于需要长时间显示的对话框,如属性设置、查找替换等。

流程

  • 创建对话框资源:在Visual Studio中,通过资源视图创建一个新的对话框资源。

  • 添加对话框类:为对话框资源创建一个对应的对话框类,通常继承自CDialogCDialogEx

  • 实例化对话框类:在需要显示对话框的地方,创建对话框类的一个实例。

  • 调用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);
    }
    

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值