概念
与用户进行交互的窗口,它的顶级父类为CWND,对话框上面可以有各种控件,控件也是继承自CWND
基本控件 | 功能 | 对应的类 |
静态文本框 | 显示文本,一般不能接收输入信息 | CStatic |
图像控件 | 显示图标、方框、和图元文件 | CStatic |
编辑器 | 编辑正文 | Cedit |
复选框 | Cbutton | |
单选框 | 只能选择一项 | Cbutton |
滚动条 | Cscrollbar |
实战
1.新建项目-->对话框,项目名称--->MFCapplication1
2右键Dialog====>选择插入Dialog==>新插入了IDD_DIALOG1,查看它的属性ID,并记住它
3.右键-->添加MFC类--->Cbingodialog---->这样在解决资源方案管理器里就有了这样一个头文件
头文件里面有Cbingodialog这个类
4.资源视图-->MFCapplication1.rc---->Dialog----->IDD_MFCAPPLICATION1_DIALOG--->点击确定按钮
4.添加模态对话框,模态对话框就是最顶部的窗口,必须关闭它才能操作其他窗口
5.在确定按钮里添加模态对话框代码
void CMFCApplication1Dlg::OnBnClickedOk()
{
CbingoDialog dlg;
dlg.DoModal();
}
6.生成非模态对话框
首先声明一个全局变量,为什么声明一个全局变量呢,因为showwindow函数不会阻塞在这里,会一直执行下去,当指向到末尾时,dlg如果为局部变量,就会被销毁,这样,这个窗口就会被销毁,得不到我们想要的结果,而模态的DOmodul会阻塞在那里,所以dlg可以设置为局部变量
CbingoDialog dlg;
void CMFCApplication1Dlg::OnBnClickedOk()
{
dlg.ShowWindow(SW_SHOW);
}
运行后,报了一个错误,错误定位在这里
我们将鼠标移到m_hwnd上面,发现它的值为null,所以我们要在初始化的时候,将它创建
dlg.Create(IDD_DIALOG1, this);
这样就创建了一个非模态对话框
用法
模态对话框主要是对话框如果会改变本体的属性,就用模态,比如调整主体窗口的颜色、字体样式,因为这时候必须先改变保存才能退出,而非模态一般用作帮助按钮、输出窗口、展示窗口这些