MFC主窗口出现之前弹出子窗口与子窗口交互问题
来源:互联网 发布:sql字段添加内容 编辑:程序博客网 时间:2024/04/29 19:32
MFC主窗口出现之前弹出子窗口与子窗口交互问题
作者:褚湘鸣 转载需注明出处
平台
Microsoft Visual Studio 2013
工具
MFC App Wizard
实现目标
1. 在MFC主窗口弹出来之前弹出一个子窗口
2. 该子窗口可以自定义一些数据域进行操作
3. 应用场景:app的hello界面,初始化等,本例中是在子窗口中选择身份,在主程序中展现出来
步骤:
1. 利用MFC App Wizard 创建一个但文档对话框模式的app。主窗口类增加一个自定义成员变量,用于接收子窗口中传来的消息。本例中使用的是自定义类Person的对象Hero的数据域Identity(private)
2. 利用Class Wizard 创建一个CDialogEx 的子类,暂且名为NewDialog,NewDialog中增加一个自定义的数据域:m_Identity,用来表示
3. 在资源视图中,利用可视化编程设计NewDialog对话框,如:
4. 点按某个按钮后,把相应的事件写出来:
如双击“领主Lord”,弹出程序,写入:
注:
1. OnBnClicked*****的意思就是在这个按钮被单击的事件发生后,需要执行的程序
2. CDialog::OnOK()函数是CDialog类及其子类所代表的(模式)对话框中都必须有的“确定”按钮被单击后执行的程序,属于默认程序。因为本程序中点按后必须关闭现有对话框,所以增加这一句。
3. LORD是我在另一个头文件中定义的宏,不用管
5. 上述程序写完后(很简单吧),子窗口就实现了如下功能:通过点按某个按钮,使子窗口对象的一个成员变量:m_Identity有了相应的值
6. 接下来,就要实现在主窗口出来之前弹出子窗口。在“主窗口类名.cpp”(本例为MBDlg.cpp)中找到OnInitDialog()函数,添加如下代码:
注:
1. 不是在InitInstance()里加,网上有的教程是错的
2. 帮助大家理清逻辑:在这个地方添加的代码执行的时间,是在主窗口定义之后,显示之前,也就是说此时主窗口的对象(类的实例)已经存在,而这段程序的位置又在这个类的成员函数内部,所以成员变量(对象)Hero也已经存在,可以直接引用;SetDlgItemText()函数也是在主窗口的内部使用,所以不用指定窗口的id(该函数原本有三个参数,第一个是指定窗口的指针,但是现在只用两个就行了)
3. 若想在某一个对话框点了“退出”或者“取消”后就退出全部程序,可以添加如下代码
if(dlg.DoModal()==IDOK){...}
else{
CDialog::OnCancel();
return true;
}
- MFC主窗口出现之前弹出子窗口与子窗口交互问题
- 父窗口与子窗口交互
- 子窗口与父窗口交互
- mfc 子窗口 跟随 主窗口
- MFC中创建并弹出子窗口
- Javascript弹出子窗口
- js 弹出子窗口
- Flex4弹出子窗口
- Javascript弹出子窗口
- javascript 弹出子窗口
- JS弹出子窗口
- js 弹出子窗口
- JavaScript弹出子窗口
- 弹出子窗口
- vs mfc 点击父窗口的按钮,弹出子窗口
- VS2010 MFC点击父窗口的按钮,弹出子窗口
- vs mfc 点击父窗口的按钮,弹出子窗口
- 窗口-》子窗口,子窗口-》浮动窗口(MFC)
- ActionBar(7)自定义的操作提供器
- Android之activity总结
- script 中使用 trap
- GridView 完美填充布局
- 求最长回文子串
- MFC主窗口出现之前弹出子窗口与子窗口交互问题
- poj2395 & poj 1751
- hadoop1.2.1的的简单安装
- Android 设置登录密码必须是数字或者字母并弹出数字键盘
- TimeDate
- hive一行数据中一列拆分成多行
- Ubuntu终端 GIT配色 去掉过去单调的黑底白色
- Minimum Queue with Constant Increment
- jQuery Event.stopPropagation() 函数详解