019.MFC_两种对话框
对话框分为模态和非模态对话框两种
模态对话框(Modal)
d.DoModal()
必须关闭才能返回主窗口
非模态对话框(Modaless)
p->Create(IDD_DIALOG,this);
p->ShowWindow(SW_SHOW);
一、建立mfc工程,添加Edit Control组件设置属性如图
二、添加两个button 到对话框并分别设置两个button的caption属性为打开模态对话框 和 打开非模态对话框
三、在资源视图中、右键单击dialog,选择插入dialog,并设置对话框id属性为IDD_FIRST_DIALOG,右键单击选择添加类,类名填写CFirstDlg,点击确定
同理添加第二个对话框,id属性为IDD_SECOND_DIALOG,右键单击选择添加类,类名填写CSecondDlg,点击确定
四、主窗口双击打开模态对话框进入主窗口对应文件dialogDlg.cpp
在dialogDlg.cpp 文件中添加
#include "FirstDlg.h"
void CdialogDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFirstDlg dlg;
dlg.DoModal();
}
同理在主窗口双击打开非模态对话框进入主窗口对应文件dialogDlg.cpp添加
#include "SecondDlg.h"
void CdialogDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
//必须要用指针
CSecondDlg *pDlg = new CSecondDlg;
pDlg->Create(IDD_SECOND_DIALOG,this);//arg1:要创建的对话框ID,arg2:父窗口指针
pDlg->ShowWindow(SW_SHOW);
}
由于非模态对话框使用指针,所以对话框在关闭时必须将它销毁,
类视图->选中CSecondDlg->属性对话框中选择重写选中PostNcDestroy
进入SecondDlg.cpp 添加
void CSecondDlg::PostNcDestroy()
{
// TODO: 在此添加专用代码和/或调用基类
delete this;
CDialogEx::PostNcDestroy();
}
至此两种模式的对话框都已添加完毕。
最新文章
- 【转】【10g SQL新特性】q-quote使用
- XHPROF相关内容
- vmstat的使用(查看系统各种负载)
- 【设计模式】Java版设计模式的类图汇总
- c++ std::sort函数调用经常出现的invalidate operator<;错误原因以及解决方法
- windows10 Build 10074版本上手体验(二)
- 第1章(三)安装VS2015和Xamarin For VS
- access的时间相关的查询
- 墙上时钟时间 ,用户cpu时间 ,系统cpu时间
- 【js实例】js中的5种基本数据类型和9种操作符
- Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程
- MyDAL - .QueryOneAsync() 使用
- 「FFT」题单(upd 2019.4.28)
- java格式化
- 设置placeholder无效解决办法
- Apache2.4反向代理设置
- fiddler filter过滤+断点
- PAT 1067 试密码
- linq的左连接右连接内连接用法
- 为什么要重写toString()方法和hashcode()方法
热门文章
- 【错误收集】SVN冲突解决 标签: 错误收集 2016-03-13 08:44 624人阅读 评论(24) 收藏
- 实现一个简易的promise
- Java面向对象----Java面向对象(OOP)概念
- Ubuntu+Apache+PHP+Mysql环境搭建(完整版)(转)
- 什么是Hessian协议呢?
- 2019-8-31-dotnet-通过-WMI-获取系统补丁
- Part17—触摸屏显身手—Part17.1—原理简介
- Python基础10 回顾
- stl_tree.h/insert_unique()
- codeforces 1230 div2