MFC应用:模态与非模态对话框的创建

需积分: 16 1 下载量 133 浏览量 更新于2024-09-12 收藏 1.23MB PDF 举报
"MFC应用中使用模拟对话框和非模拟对话框的步骤与方法" 在MFC(Microsoft Foundation Classes)编程中,对话框是非常重要的组件,常用于收集用户输入或展示信息。本文将详细讲解如何在单文档环境下创建和使用模态对话框(Modal Dialog)和非模态对话框(Modeless Dialog)。 首先,创建MFC应用程序是基础。在VC++中,选择"MFCAppWizard(exe)"选项,工程命名为"ShowDialog",在"AppWizard – Setup(1-6)"中选择"Single document",然后默认设置其余步骤并点击"Finish"创建工程。 接下来,我们需要创建对话框资源。在"Resource View"中选择"Dialog",右键点击并选择"Insert Dialog",创建两个对话框,分别为"IDD_DIALOG_MODAL"和"IDD_DIALOG_DOMODAL",并将它们的"Caption"属性分别设定为"模态对话框"和"非模态对话框"。 对话框创建后,为了能够操作它们,我们需要为每个对话框添加对应的类。右键点击对话框,选择"ClassWizard"。对于模态对话框"IDD_DIALOG_MODAL",在弹出的对话框中确认新建类,类名为"CModalDlg",基类选择"CDialog"。同样地,为非模态对话框"IDD_DIALOG_DOMODAL"创建类"CDomodalDlg",基类同样是"CDialog"。 接着,我们为应用程序的菜单栏添加功能。在"Resource"选项卡中找到"Menu",双击"IDR_MANIFRAME"以编辑系统菜单。添加一个顶级菜单项"弹出对话框",并在其下创建两个子菜单,ID分别为"IDM_DOMODAL"和"IDM_MODAL",分别对应"弹出模态对话框"和"弹出非模态对话框"。 最后,为菜单项添加事件处理。右键点击菜单子项,选择"ClassWizard",确保"Resource ID"与刚刚创建的菜单ID匹配,"ClassName"为"CMainFrame"(因为菜单通常在框架窗口中响应),而"Message"应选择"ON_COMMAND",这样当用户点击菜单时,对应的函数将被调用来显示对话框。 模态对话框在打开后会阻塞用户的交互,直到用户关闭对话框;而非模态对话框则允许用户同时与主窗口和其他对话框进行交互。在MFC中,通过`DoModal()`函数可以创建并显示模态对话框,而使用`Create()`函数则可以创建非模态对话框。在对应的类中,你需要重载`OnInitDialog()`以初始化对话框控件,以及可能的`OnOK()`和`OnCancel()`等消息处理函数。 通过以上步骤,你就能够在MFC程序中成功地创建、显示模态和非模态对话框,实现与用户的交互。在实际开发中,对话框经常用于输入数据、显示信息或进行复杂操作的设置,是提高用户体验的重要工具。