鸡啄米:模态、非模态对话框
来源:互联网 发布:无极郭敬明知乎 编辑:程序博客网 时间:2024/06/09 16:04
模态对话框:(1)找到视图,添加一个“对话框”资源作为模态对话框(即:插入 Dialog(E));(2)再给该模态对话框资源在添加类,类名为CTipDlg。 右键新加入的对话框,添加类,输入类名CTipDlg再点击确定。(3)再将模态对话框的头文件#include"CTipDlg.h"添加到当前项目“项目名Dlg.Cpp” 中去。注:添加头文件的位置应该在原本头文件的下面。---------------------------------------------------------------------------------------------(4)双击“打开模态对话框”按钮,进入事件处理函数,添加下面的代码,用来调用模态对话框。 INT_PTR nRes; // 用于保存DoModal函数的返回值 CTipDlg tipDlg; //定义一个模态对话框的对象 nRes = tipDlg.DoModal(); // 弹出该模态对话框 if (IDCANCEL == nRes) // 判断对话框退出后返回值是否为IDCANCEL return; (5)给模态对话框中添加控件以及代码
========================================================================================
非模态对话框:(1)必须声明一个指向CTipDlg类的指针变量(2)需要显示的调用ShowWindow()才能将对话框显示出来。步 骤1、添加一个“对话框”资源作为非模态对话框; 再给该对话框资源在添加类,类名为CTipDlg ;2、处理____Dlg.h头文件:①在____Dlg.h中加上#include"TipDlg.h" (注:此处和模态对话框不同)②在____Dlg.h中为____Dlg类添加private成员变量 即: CTipDlg *m_pTipDlg;③在____Dlg类的构造函数中初始化成员变量m_pTipDlg。 即: 在构造函数体中添加m_pTipDlg = NULL;3、双击按钮,添加按键处理事件,代码如下: if (NULL == m_pTipDlg)// 如果指针变量m_pTipDlg的值为NULL,则对话框还未创建,需要动态创建 { // 创建非模态对话框实例 m_pTipDlg = new CTipDlg(); //【注】 此处new,必须在析构函数中delete释放 m_pTipDlg->Create(IDD_TIP_DIALOG, this); //注:IDD_TIP_DIALOG应改成对话框二的ID } m_pTipDlg->ShowWindow(SW_SHOW); // 显示非模态对话框 4、定义析构函数进行手动删除new出来的非模态对话框。①先在_____Dlg.h文件中为C____Dlg添加析构函数声明: ~C_____Dlg(); ②然后在_____Dlg.cpp文件中添加析构函数的实现,函数体如下:注:此处的下划线填写工程的名称(而不是非模态对话框类的名称)!C____Dlg::~C_____Dlg() { // 如果非模态对话框已经创建则删除它 if (NULL != m_pTipDlg) { // 删除非模态对话框对象 delete m_pTipDlg; } } 执行结果图:
有两种创建方法:(1) 采用局部变量创建一个非模态对话框 双击按钮,添加下面的代码 CTestDialog *pTD = new CTestDialog(); pTD->Create(IDD_DIALOG1); //创建一个非模态对话框 pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框 因为指针在声明的时候是被放在堆栈中,只有整个应用程序关闭后才会被销毁,所以可以正常显示对话框。 这种方法虽然不影响程序的运行,可是指针pTD所指向的内存却导致不可用,这样的编程很不好。(2)采用成员变量创建一个非模态对话框 首先在你所要编写的类的头文件中声明一个指针变量:private: CTestDialog *pTD;然后再在相应的CPP文件,在你要创建对话框的位置添加如下代码:双击按钮,添加下面的代码 pTD = new CTestDialog(); //给指针分配内存 pTD->Create(IDD_DIALOG1); //创建一个非模态对话框 pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框 最后在所在类的析构函数中收回pTD所指向的内存: delete pTD;
模态对话框嵌套的总思路: 先插入一个新的对话框 为该对话框修改ID后,添加类 此时就可以在对话框上创建控件和消息处理函数了
阅读全文
0 0
- 鸡啄米:模态、非模态对话框
- 【MFC】模态、非模态对话框
- 模态,非模态对话框
- 模态、非模态对话框、window.open
- Qt对话框_模态/非模态
- Qt QDialog对话框 模态&非模态
- 鸡啄米MFC模态对话框和非模态对话框实验
- VS2010&MFC对话框编程(2)——对话框种类(模态/非模态对话框)
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- 非模态对话框
- Python的select
- hdu 3555 数位dp入门
- Photo Sphere Viewer API
- TensorFlow学习笔记(二):实例数据下载
- hdu 1072 Nightmare
- 鸡啄米:模态、非模态对话框
- 使用Google cloud platform SDK 调用 google translate API
- Genymotion无法启动
- PuTTY+Xming实现X11的ssh转发
- 博弈论习题
- 树之基础
- LeetCode 46 Permutations + LeetCode 47 Permutations II
- [ACM] POJ 3087 Shuffle'm Up
- HDUOJ 2018 母牛的故事