MFC menu 事件 dialog 对话框 传递 传值

环境:VS2010

视图部分:

1.  新建一个MFC 基于对话框的 应用程序,工程名为 menu_status

2. 添加menu

右击,添加资源

MFC menu 事件 dialog 对话框 传递 传值_第1张图片

直接输入

MFC menu 事件 dialog 对话框 传递 传值_第2张图片

默认id


设置主对话框的Menu属性为刚才新建的menu的ID,即IDR_MENU1



此时运行程序,即可看到预期的视图。


下面是控制部分:

事件处理:

MFC menu 事件 dialog 对话框 传递 传值_第3张图片


MFC menu 事件 dialog 对话框 传递 传值_第4张图片


“关于”的点击事件的函数名为 OnAbout



新建 点击“关于”时 弹出的对话框

MFC menu 事件 dialog 对话框 传递 传值_第5张图片


新建的对话框如下,增加一个编辑框,删除“取消”,重命名“确认”为“关于”

MFC menu 事件 dialog 对话框 传递 传值_第6张图片


子类化 新建的dialog,注意这里继承的基类选的是CDialog,不是CDialogEx;也可以选择CDialogEx,它们的区别在重载OnInitDialog时体现,后面会详细说明;

 MFC menu 事件 dialog 对话框 传递 传值_第7张图片


在主应用程序中声明,txtedit1变量用于 主对话框和点击“关于”弹出的对话框 之间的传值

MFC menu 事件 dialog 对话框 传递 传值_第8张图片


在AboutMe.h中,手动添加OnInitDialog



在AboutMe.cpp中,将edit控件的值设置为theApp.txtedit1;

MFC menu 事件 dialog 对话框 传递 传值_第9张图片

如果CAboutMe继承自CDialogEx,则此处换为 CDialog::OnInitDialog();


MFC menu 事件 dialog 对话框 传递 传值_第10张图片



“关于”按钮的点击事件, 将edit控件的值保存到theApp.txtedit1中

MFC menu 事件 dialog 对话框 传递 传值_第11张图片

在主对话框中,点击 菜单-关于的处理如下

MFC menu 事件 dialog 对话框 传递 传值_第12张图片

解释: 执行完 CAboutMe am后,关于对话框的edit控件尚未实例化,不可操作它;

当执行完am.DoModal()后,关于对话框的edit控件尚未实例化,不可操作它;

紧接着在AboutMe中执行我们手动添加的OnInitDialog,当执行完 CDialog::OnInitDialog()后,edit控件才可操作;



你可能感兴趣的:(MFC menu 事件 dialog 对话框 传递 传值)