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

<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.lryc.cn/news/2380126.html

相关文章:

  • 山东大学计算机图形学期末复习整理5——CG10上
  • STM32移植LVGL8.3 (保姆级图文教程)
  • AT 指令详解:基于 MCU 的通信控制实战指南AT 指令详解
  • 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系
  • C++多态的详细讲解
  • vue项目启动报错
  • 项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉
  • 免费私有化部署! PawSQL社区版,超越EverSQL的企业级SQL优化工具面向个人开发者开放使用了
  • SecureCRT 使用指南:安装、设置与高效操作
  • Tomcat多应用部署与静态资源路径问题全解指南
  • web常见的攻击方式
  • 【微信小程序 + 高德地图API 】键入关键字搜索地址,获取经纬度等
  • java中如何优雅处理多租户系统的查询?
  • 排序算法之线性时间排序:计数排序,基数排序,桶排序详解
  • Linux | mdadm 创建软 RAID
  • 物联网工程毕业设计课题实践指南
  • CodeEdit:macOS上一款可以让Xcode退休的IDE
  • LLaMA-Factory 微调 Qwen2-7B-Instruct
  • mac本地docker镜像上传指定虚拟机
  • 从代码学习深度学习 - 风格迁移 PyTorch版
  • 软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析
  • 轻量级离线版二维码工具的技术分析与开发指南
  • 中级网络工程师知识点4
  • 机器学习--特征工程具体案例
  • LeetCode 每日一题 2025/5/12-2025/5/18
  • Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览
  • 电机控制杂谈(25)——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?
  • 多模态大语言模型arxiv论文略读(七十八)
  • 项目中把webpack 打包改为vite 打包
  • 【C语言】易错题 经典题型