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

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

相关文章:

  • Java对象的GC回收年龄的研究
  • 反病毒反垃圾U-Mail邮件系统从容应对
  • python制造一个报错
  • websocket简介与基本使用
  • 15:00开始面试,15:06就出来了,问的问题有点变态。。。
  • 《MySQL:MySQL事务特性》
  • uniapp中vue3和pinia安装依赖npm install失败
  • Web安全科普:构建数字世界的“防盗门”
  • Xinference 命令大全:从模型部署到管理
  • coze从入门到入土:excel表格批量导入数据库工作流制作【解决节点使用上限】 + API接口上传文件和用户需求
  • .NET 通过命令行解密web.config配置
  • PostgreSQL MCP 使用案例
  • Ascend的aclgraph(九)AclConcreteGraph:e2e执行aclgraph
  • Digi XBee XR 系列介绍
  • 第四章 部件篇之下拉列表部件
  • 用MCP往ppt文件里插入系统架构图
  • [QMT量化交易小白入门]-五十三、总收益率187%,年化收益率在5.57%,二十年回测,每月调仓,获取稳定的收益
  • 用C语言实现了——一个基于顺序表的插入排序演示系统
  • 班会内容模板
  • GitHub 趋势日报 (2025年05月14日)
  • 夜读丨读《汉书》一得
  • 紫光集团原董事长赵伟国一审被判死缓
  • 七旬男子驾“老头乐”酒驾被查,曾有两次酒驾两次肇事记录
  • 来伊份发布关于消费者反映蜜枣粽问题处理的情况说明:与消费者达成和解
  • 美国政府信用卡被设1美元限额,10美元采购花一两小时填表
  • 2025年上海好护士揭晓,上海护士五年增近两成达12.31万人