MFC单文档之快速创建多个对话框类
来源:互联网 发布:美容软件app推荐 编辑:程序博客网 时间:2024/05/24 07:44
1.新建一个对话框类
在资源目录下面插入dialog,同时更改其ID名,然后双击打开后右键添加类,基于CDialog,点击完成即可,然后在单文档的Mainfrm.cpp中可以通过点击三个目录弹出对应的三个对话框,这三个对话框都是基于刚刚建立的对话框类。
2.创建多个对话框类
为什么一个对话框类可以实现三个对话框的弹出还要创建多个对话框类?因为一个对话框类只能实现很简单的功能,如果每个弹出的对话框中要实现很多功能的话,那就最好各自都建立一个对话框类,比如我每个对话框中都要有状态指示灯,刚开始是准备在一个对话框类中声明所有的变量的,但是后来发现在两个对话框中都要调用时就会报错,于是必须各自新建一个类。
3.快速创建步骤
右键添加类,然后依照着第一个对话框类中的源文件和头文件中的内容,定义变量,消息映射函数,初始化函数,这里可以省略掉很多的步骤,只用复制粘贴相关代码到指定位置就行,比类向导快多了。
Mainfrm.h中:
#include "DLG.h"#include "DLG_BM.h"#include "DLG_CI.h"
afx_msg void OnIo(); afx_msg void OnBasicmotion(); afx_msg void OnContinuousintepolation();CDLG *m_XDlg; CDLG_BM *m_XDlg1; CDLG_CI *m_XDlg2;
Mainfrm.cpp中:
void CMainFrame::OnIo(){ // TODO: 在此添加命令处理程序代码 m_XDlg = new CDLG(); m_XDlg->Create(IDD_IO, this); // 显示非模态对话框 m_XDlg->ShowWindow(SW_SHOW);}void CMainFrame::OnBasicmotion(){ // TODO: 在此添加命令处理程序代码 m_XDlg1 = new CDLG_BM(); m_XDlg1->Create(IDD_BASICMOTION, this); // 显示非模态对话框 m_XDlg1->ShowWindow(SW_SHOW);}void CMainFrame::OnContinuousintepolation(){ // TODO: 在此添加命令处理程序代码 m_XDlg2 = new CDLG_CI(); m_XDlg2->Create(IDD_CONTINUOUSINTEPOLATION, this); // 显示非模态对话框 m_XDlg2->ShowWindow(SW_SHOW);}
4.各个对话框类中快速粘贴
以其中一个为例:
DLG_CI.h中:
public: virtual BOOL OnInitDialog(); HICON m_hIconLedRed; HICON m_hIconLedGreen; HICON m_hIconLedBlue; CStatic m_StateLed157, m_StateLed158, m_StateLed159, m_StateLed160;
DLG_CI.cpp中:
void CDLG_CI::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_PIC157, m_StateLed157); DDX_Control(pDX, IDC_PIC158, m_StateLed158); DDX_Control(pDX, IDC_PIC159, m_StateLed159); DDX_Control(pDX, IDC_PIC160, m_StateLed160);}
// CDLG_CI 消息处理程序
BOOL CDLG_CI::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化m_hIconLedRed = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_LEDRED), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);m_hIconLedGreen = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_LEDGREEN), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);m_hIconLedBlue = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_LEDBLUE), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);//初始化为红色m_StateLed157.SetIcon(m_hIconLedRed); m_StateLed158.SetIcon(m_hIconLedRed); m_StateLed159.SetIcon(m_hIconLedRed); m_StateLed160.SetIcon(m_hIconLedRed);return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}
5.看似复杂,其实非常快
欣赏效果吧:
0 0
- MFC单文档之快速创建多个对话框类
- MFC单文档之利用全局变量一次设置多个对话框的串口通讯
- 创建MFC应用程序的类型:单文档+多文档+基于对话框
- MFC单文档嵌入对话框
- MFC应用程序类型:单文档、多文档与基于对话框
- MFC 单文档、多文档和对话框程序
- 基于MFC的单文档,多文档,对话框应用程序
- MFC 单文档、多文档、对话框程序区分
- 【MFC】应用程序类型:单文档、多文档与基于对话框
- MFC单文档中创建多视图
- MFC单文档中创建多视图
- MFC 单文档创建过程
- MFC单文档 对话框 模式对话框和非模式对话框
- VS2010使用MFC创建绿色软件及单文档和多文档及一个解决方案包含多个项目的解决方法
- MFC窗口隐藏 --对话框--单文档
- MFC单文档程序初始化对话框方法
- 单文档、多文档、对话框
- MFC单文档之基于MSCOMM的多个编辑框的串口通讯
- win7_64位下python3.4安装numpy,scipy提示注册表报错
- DL入门
- 竖式迷
- IT开发资源网站大全
- JS的两个内置对象
- MFC单文档之快速创建多个对话框类
- FreeCodeCamp学习--Confirm the Ending
- spring 第三章 高级装配 小结
- FFmpeg学习—android 编译 FDK-AAC 库
- P1087 FBI树
- MapReduce 2.0应用场景、原理与基本架构 | mapreduce顺序图 + mapreduce动图
- 基于视频压缩的实时监控系统-A1:产品设计与规划
- Spring MVC学习(三)-------DispatcherServlet详解
- Mininet安装使用