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

最后效果如下:

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

源代码件见绑定的资源

相关推荐
黑不溜秋的3 小时前
C++ 设计模式 - 策略模式
c++·设计模式·策略模式
Dream it possible!5 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
柠石榴5 小时前
【练习】【回溯No.1】力扣 77. 组合
c++·算法·leetcode·回溯
王老师青少年编程5 小时前
【GESP C++八级考试考点详细解读】
数据结构·c++·算法·gesp·csp·信奥赛
gz927cool7 小时前
大模型做导师之开源项目学习(lightRAG)
学习·开源·mfc
澄澈天空7 小时前
C++ MFC添加RichEditControl控件后,程序启动失败
c++·mfc
TechNomad7 小时前
MFC开发:如何创建第一个MFC应用程序
mfc
Lzc7748 小时前
C++初阶——简单实现vector
c++·简单实现vector
一个小白18 小时前
C++——list模拟实现
开发语言·c++
程序员老舅8 小时前
C++ Qt项目教程:WebServer网络测试工具
c++·qt·测试工具·webserver·qt项目·qt项目实战