环境:VS2010
视图部分:
1. 新建一个MFC 基于对话框的 应用程序,工程名为 menu_status
2. 添加menu
右击,添加资源
直接输入
默认id
设置主对话框的Menu属性为刚才新建的menu的ID,即IDR_MENU1
此时运行程序,即可看到预期的视图。
下面是控制部分:
事件处理:
“关于”的点击事件的函数名为 OnAbout
新建 点击“关于”时 弹出的对话框
新建的对话框如下,增加一个编辑框,删除“取消”,重命名“确认”为“关于”
子类化 新建的dialog,注意这里继承的基类选的是CDialog,不是CDialogEx;也可以选择CDialogEx,它们的区别在重载OnInitDialog时体现,后面会详细说明;
在主应用程序中声明,txtedit1变量用于 主对话框和点击“关于”弹出的对话框 之间的传值
在AboutMe.h中,手动添加OnInitDialog
在AboutMe.cpp中,将edit控件的值设置为theApp.txtedit1;
如果CAboutMe继承自CDialogEx,则此处换为 CDialog::OnInitDialog();
“关于”按钮的点击事件, 将edit控件的值保存到theApp.txtedit1中
在主对话框中,点击 菜单-关于的处理如下
解释: 执行完 CAboutMe am后,关于对话框的edit控件尚未实例化,不可操作它;
当执行完am.DoModal()后,关于对话框的edit控件尚未实例化,不可操作它;
紧接着在AboutMe中执行我们手动添加的OnInitDialog,当执行完 CDialog::OnInitDialog()后,edit控件才可操作;