6.2.11 创建弹出模态对话框的菜单
下面我们在前面创建的对话框中添加一个菜单项,下挂一个菜单,菜单命令的消息响应函数用来弹出一个模态对话框。
下面首先在菜单资源中添加菜单项和下拉菜单。
在工作区的Resource View标签中,双击“dialog_1 resource”→“Menu”→“IDR_dialog_1 TYPE”条目,打开菜单资源。
选中菜单资源中的“查看”菜单,弹出下拉的菜单,选中下面的一个空白菜单项。
单击鼠标右键,选中弹出菜单的Properties菜单命令,弹出属性对话框,单击其中的“Keep Visible”按钮,使属性对话框始终显示在前端。
选中General标签中的Separator,在菜单资源中添加一个分隔条,同时在最下面又自动产生一个空白菜单。
选中空白菜单,在属性对话框的General中输入ID_VIEW_MODALDIALOG,在Caption中输入“模态对话框(&M)…”,同时下面又会自动增加一个空白的菜单。
此时如果编辑、链接和运行程序,可以看到新增加的菜单项是灰色的。下面为刚刚创建的菜单项增加消息响应函数。
通过菜单“View”→“ClassWizard”打开MFC ClassWizard对话框,在Class name项中选择CDialog_1View,在Object IDs中选择ID_VIEW_MODALDIALOG,在Message中选择消息COMMAND,单击“Add Function”按钮添加菜单命令的消息响应函数。函数名取默认值。
编辑、链接和运行程序,如图6-21所示。
下面我们在资源中增加一个对话框,将标识号设置为IDD_MODAL_DIALOG,其中在对话框中添加一个静态的文本框,用来提示用户弹出的是一个模态的对话框,同样把“OK”按钮和“CANCEL”按钮分别修改为“确定”和“取消”,然后创建相关类,类名为CDialogModal,头文件和源文件将会自动设置为CDialogModal.h和CDialogModal.cpp。
创建好以后,下面将在dialog_1中显示该对话框,步骤如下。
在工作区的ClassView标签中的“dialog_1 classes”→“CDialog_1View”→“OnView Modaldialog()”条目上双击,定位到CDialog_1View::OnViewModaldialog()函数处,在其中添加如下代码:
上面的函数实际就是菜单命令“模态对话框…”的响应函数,通过ClassView也可以很快定位到该函数。
在dialog_1View.cpp文件的头部,其他#include语句后添加下面的包含语句:
#include "DialogModal.h"
编辑、链接和运行程序,测试模态对话框的效果,在如图6-21所示中单击“查看”→“模态对话框”,则弹出刚刚创建的新对话框,如图6-22所示。

图6-21 为菜单项增加消息响应函数
图6-22 弹出模态对话框
【责任编辑:
杨硕 TEL:(010)68476636-8001】