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

环境: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控件才可操作;



你可能感兴趣的:(MFC,MFC,Dialog,MFC,Menu事件,Dialog子类化)