当前位置: 首页 > ops >正文

<C++> MFC自动关闭对话框(MessageBoxTimeout)

MFC自动关闭对话框(MessageBoxTimeout)

记录一下今天在界面开发中的解决方案。自动关闭对话框有两种方案:

1.使用定时器实现延迟关闭(DeepSeek方案)

提示框显示几秒后自动关闭,可以使用 SetTimer + KillTimer:

// 在对话框类中添加:
void CMyDialog::OnBnClickedOk()
{YourFunction();  // 执行你的逻辑// 弹出提示框MessageBox(_T("操作完成,3秒后自动关闭"), _T("提示"), MB_OK | MB_ICONINFORMATION);// 设置定时器(3秒后关闭)SetTimer(1, 3000, NULL);  // 3000ms = 3秒
}// 处理 WM_TIMER 事件
void CMyDialog::OnTimer(UINT_PTR nIDEvent)
{if (nIDEvent == 1){KillTimer(1);      // 停止定时器EndDialog(IDOK);   // 关闭对话框}CDialogEx::OnTimer(nIDEvent);
}

2.使用Windows API:MessageBoxTimeout

方案一的确可以解决项目上的问题,但是目前的界面开发中已经使用了一个定时器进行主对话框的关闭,因此,我想找一个简单便捷的方式。该API是由user32.dll导出。
建立一个头文件MessageBoxTimeout.h,或者直接将一下代码添加到需要使用的cpp文件中。

extern "C"
{int WINAPI MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);int WINAPI MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
}#ifdef UNICODE
#define MessageBoxTimeout MessageBoxTimeoutW
#else
#define MessageBoxTimeout MessageBoxTimeoutA
#endif

使用案例:

// 设置1000ms自动关闭该提示对话框
MessageBoxTimeout(NULL, _T("制作完成!"), _T("提示"), MB_ICONINFORMATION, 0, 1000);
http://www.xdnf.cn/news/6303.html

相关文章:

  • Vue 学习随笔系列二十三 -- el-date-picker 组件
  • Python中的虚拟环境
  • U9C与钉钉审批流对接完整过程
  • lesson02-PyTorch开发环境安装
  • 光谱相机的图像预处理技术
  • 当服务器出现宕机情况该怎么办?
  • Axure中继器高保真交互原型的核心元件
  • 科技的成就(六十八)
  • 网络原理 | 网络基础概念复习
  • Automatic Recovery of the Atmospheric Light in Hazy Images论文阅读
  • 使用 SiamMask 实现单目标逐帧跟踪与掩码中心提取
  • 深入探索 OpenCV:从实时视频流到图像处理的实战指南
  • 技术文档不完善,如何促进知识传承
  • AI日报 · 2025年5月15日|GPT-4.1 登陆 ChatGPT
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 注意“回车换行“的跨平台使用.
  • 基于YOLO算法的目标检测系统实现指南
  • 蓝桥杯11届国B 约数
  • 小程序映射逻辑处理
  • 【Python】在vscode利用pyinstaller中的.spec文件把py项目打包为.exe实现非py环境下使用的操作步骤
  • 如何通过partclone克隆Ubuntu 22系统
  • 红黑树和递归树
  • 嵌入式学习的第二十一天-数据结构-双向链表
  • 滑动窗口最大值
  • shell脚本练习(6):备份MySQL数据库表
  • 平滑过滤值策略
  • IP地址、端口、TCP介绍、socket介绍、程序中socket管理
  • 【MySQL】第四弹——表的CRUD进阶(二)数据库设计
  • 穿透工具如何保证信息安全?
  • 小白入门:GitHub 远程仓库使用全攻略
  • Stack overflow