锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源心得 / MFC对话框类开发
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究


MFC对话框类开发


类视图

经过对话框工程向导操作后,生成了项目,在类视图中,可以看到生成了3 个类:CAboutDlg、CDialogApp和CDialogDlg。
类视力

  • CAboutDlg:对应生成的软件信息和版本信息对话框。
  • CDialogApp:应用程序类,从 CWinApp 继承过来,封装了初始化、运行、终止该程序的代码。
  • CDialogDlg:对话框类,从CdialogEx继承过来的,在程序运行时看到的对话框就是它的一个具体对象。
    • DoDataExchange函数:该函数主要完成对话框数据的交换和校验。
    • OnInitDialog函数:相当于对对话框进行初始化处理。

模态对话框

当模态对话框显示时,程序会限制焦点只在模态对话框上,进程的其它窗口是获取不到焦点。具体体现是点了模态对话框外其它位置,会是禁止的铛铛音,点模态对话框呢,就可以点。

1)通过工具箱在界面上放一个Button,双击此按钮即可跳转到按钮处理函数:
按钮

//按钮处理函数
void CDialogDlg::OnBnClickedButton1()
{
// TODO:  在此添加控件通知处理程序代码
}

2)资源视图 -> Dialog -> 右击 -> 插入 Dialog:
插入Dialog
界面

  • 修改对话框ID:

修改ID

  • 点击对话框模板 -> 右击 -> 添加类:

添加类

起类名

  • 类视图中多了一个自定义类:

映射

按钮处理函数创建对话框,以模态方式运行。

实现模态对话框的创建需要调用CDialog类的成员函数CDialog::DoModel,该函数的功能就是创建并显示一个对话框:


//启动模态对话框按钮
void CDialogDlg::OnBnClickedButton1()
{
//需要包含头文件:#include "DlgExec.h"
CDlgExec dlg;
dlg.DoModal(); //以模态方式运行
}

 

2.4非模态对话框

当非模态对话框显示时,运行转而执行程序中的其他任务,而不用关闭这个对话框。

图形界面操作过程和模态对话框一样,只是,非模态对话框实现方式不一样,先创建(CDialog::Create)一次,然后再显示(CWnd::ShowWindow)。

  • 主对话框.h类中声明对话框对象:

对话框类对象

创建对话框放在主对话框类的构造函数或OnCreate()函数,目的只创建一次对话框:

//主对话框构造函数
CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CDialogDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

        m_dlg.Create(IDD_DIALOG_SHOW); //IDD_DIALOG_SHOW为对话框ID
}

  • 按钮处理函数显示对话框:

//启动非模态对话框按钮
void CDialogDlg::OnBnClickedButton2()
{
// TODO:  在此添加控件通知处理程序代码

        m_dlg.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框
}

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内