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);
}

最后效果如下:

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

源代码件见绑定的资源

相关推荐
争不过朝夕,又念着往昔9 分钟前
C++AI
开发语言·c++·人工智能
敲上瘾14 分钟前
C++11线程库指南:线程、锁、原子操作与并发编程实战
开发语言·c++·多线程
微露清风26 分钟前
系统性学习C++进阶-第十五讲-map和set的使用
java·c++·学习
fqbqrr1 小时前
2601,C++的模块1
c++
啊董dong1 小时前
noi-2025年12月23号作业
数据结构·c++·算法·noi
青岛少儿编程-王老师1 小时前
CCF编程能力等级认证GESP—C++8级—20251227
java·开发语言·c++
hd51cc1 小时前
MFC打印技术
c++·mfc
爱吃生蚝的于勒1 小时前
【Linux】零基础深入学习动静态库+深入学习地址
linux·运维·服务器·c语言·数据结构·c++·学习
_OP_CHEN2 小时前
【从零开始的Qt开发指南】(十四)Qt 窗口之“三剑客”:工具栏、状态栏、浮动窗口进阶实战指南
开发语言·c++·qt·前端开发·gui开发·qt窗口
郝学胜-神的一滴2 小时前
Qt重复添加控件问题探析:现象、原理与解决方案
开发语言·数据库·c++·qt·程序人生