MFC中如何创建一个非模态对话框

对话框是编程中常用的一个控件,非模态对话框与用户交互更加友好,用户不必关闭对话框就能进行其他操作,比如拷贝黏贴,对比数据,执行其他命令。

由于无模态对话经常使用,且用法类似,因此我把它写成了一个类,每次只要继承即可使用非模态对话框,不再重复做哪些繁琐的操作。

下面以具体实例讲解,如何使用这个类。

首先使用VS2022创建一个MFC的工程。

因为只是演示对话框的使用,因此我们直接用向导的默认值直接生成工程

运行效果是这样:

将非模态对话框类的两个文件拷贝到工程中,并加入到解决方案。

继承自CModelessDlg

修改包含的头文件

添加一个对话框资源,名称改为:IDD_CModelessDlg

这个对话框就是以后你需要给用户展示用的。

找一个可以调用此对话的地方演示效果,就在菜单中吧,加一个菜单项

添加事件处理程序:

增加实际调用代码:

复制代码
#include "CTestM.h"
void CMFCApplication8App::On32771()
{
	BOOL bResult = FALSE;
	CTestM *pDlg = new CTestM;
	ASSERT_VALID(pDlg);
	bResult = pDlg->Create(CTestM::IDD);
	pDlg->ShowWindow(SW_SHOW);
}

最后效果如下:

不需要考虑指针释放,不需要考虑多次调用,这些都已经在非模态对话框已经都做好了。

源代码件见绑定的资源

相关推荐
nianniannnn13 小时前
Eigen 矩阵操作笔记
c++·笔记·线性代数·矩阵
adfass13 小时前
桌面挂件时钟/多功能时钟C++
开发语言·c++·算法
全栈视界师13 小时前
《机器人实践开发②:Foxglove 嵌入式移植 + CMake 集成》
c++·机器人·数据可视化
繁华似锦respect14 小时前
Linux-内核核心组成部分
linux·c++
不知所云,14 小时前
2.windows c/c++ 编译器安装, mingw和clang
c语言·c++·windows·mingw·clang·c编译器
爪哇部落算法小助手14 小时前
爪哇周赛 Round 3
数据结构·c++·算法
十五年专注C++开发15 小时前
Mimalloc:一款高性能、低开销和线程安全的C++内存分配器
c++·内存分配·mimalloc
纵有疾風起15 小时前
【C++—STL】红黑树底层封装与set/map模拟实现
开发语言·c++·经验分享·面试·开源·stl
却道天凉_好个秋15 小时前
c++ shared_ptr与unique_ptr总结
c++
不知所云,15 小时前
4. vscode c++ 环境及工程搭建 clangd + mingw
c++·ide·vscode·开发环境·clangd