创建MFC 项目
新建项目-》 MFC应用-》应用程序类型为单个文档,项目样式选择MFC standard
或者应用程序类型选择基于对话框-》完成
资源视图
1:解决方案资源管理器-》资源文件-》找到.rc后缀的文件-》双击进去-》打开dialog文件夹-》IDD_MFC_03_DIALOG(点击这个)
2:在工具栏下面的视图找到资源视图(vs2017版本的在视图-》其他窗口-》资源视图),点击就能打开,然后打开dialog文件夹-》IDD_MFC_03_DIALOG
修改属性
1:通过代码修改
2:在资源视图下右键,点击属性,然后就可修改对应的内容,回车可确认,例如caption 标题,把它改成了对话框
如果是控件的话,选中控件,右键点击属性,重复上面的操作
3:选中控件,直接敲,可改标题,回车确认
工具箱下面有可拖动的控件,如果工具箱关闭了,视图-》工具箱
关联对话框与事件
选中dialog文件夹,点击右键,插入dialog-》插入新的对话框
首先对话框控件需添加一个新的类,选中该对话框-》右键-》添加类
会自动添加头文件与源文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210219091150538.png?x-oss-process=image/watermark,type_Zm
让按钮或其他关联到事件
1:选中该控件,右键,属性-》控件事件
2:选中该控件,右键-》添加事件处理程序
3:双击该控件,它默认的是点击事件
然后;
// TODO: 在此添加控件通知处理程序代码
CDlgMotai mdlg; //CDlgMotai是那个模态对话框添加的类
mdlg.DoModal(); //当对话框处于活动状态时,该函数处理与用户的交互。这使得对话框是模态的
//使用户在关闭对话框之前不能与其它窗口交互。
//非模态对话框
void Cmfc03Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CDeMotai demdlg;
//创建
demdlg.Create(IDD_DE_MOTAI); //把创建出来的对话框的ID号添加进去
//显示
demdlg.ShowWindow(SW_SHOWNORMAL); //SW_SHOWNORMAL 激活并显示窗口。如果窗口是最小化或最大化的,则Windows恢复它原来的大小和位置。
}
模态对话框有堵塞功能,非模态没有,这样写的话就会一闪而过,因为创建出来的是局部对象,作用域结束就会消失
解决方法:
写到成员函数里面(写到系统自动创建的mfcdlg的头文件下,记得加自己写的那个类的头文件)
private:
CDeMotai demdlg;
这么写可以显示,变成了全局对象,对话框对象会一直存在
但是只会显示一次,第二次点击非模态对话框的时候就会出现bug,因为创建窗口只能创建一次,多次就会崩掉
所以只能让它初始化一次,在默认的mfcdlg文件夹下找到初始化函数Cmfc03Dlg::OnInitDialog(推荐用这个,在MFC里面,而不是构造函数)
// TODO: 在此添加额外的初始化代码
demdlg.Create(IDD_DE_MOTAI); //把创建出来的对话框的ID号添加进去