关于弹出消息窗口的自动关闭
1.方法1
1.1. 直接在代码中添加
// 弹出消息窗口自动关闭,需要指出的是,Windows 2000的user32.dll没有导出这个函数。
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
1.2. 调用
MessageBoxTimeout(this->GetSafeHwnd(), _T("弹出5秒后会自动关闭!这是一个模态对话框。"), _T("会自动关闭的MessageBox"), MB_ICONINFORMATION, GetSystemDefaultLangID(), 5000);//参数说明:父窗口的句柄为NULL的情况下,将弹出非模态对话框;延时关闭的时间为0的情况下,弹出的MessageBox需要手动关闭MessageBoxTimeout(NULL, _T("弹出5秒后会自动关闭!这是一个非模态对话框。"), _T("会自动关闭的MessageBox"), MB_ICONINFORMATION, GetSystemDefaultLangID(), 5000);
参考网址:http://blog.sina.com.cn/s/blog_4b0f3b420100mglb.html
win7 x86,vs2013,测试通过
2.方法2
2.1.此api是微软的一个未公开api,在user32.dll中,功能就是弹出一个对话框MessageBox,并定时自动退出。
下面为头文件,随便取个名字,我取的是MsgBoxTimeout.h 。
#include <windows.h>
#include <tchar.h>//Functions & other definitions required-->
typedef int (__stdcall *MSGBOXAAPI)(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
typedef int (__stdcall *MSGBOXWAPI)(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);int MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
int 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 #define MB_TIMEDOUT 32000int MessageBoxTimeoutA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
{static MSGBOXAAPI MsgBoxTOA = NULL;if (!MsgBoxTOA){HMODULE hUser32 = GetModuleHandle(_T("user32.dll"));if (hUser32){MsgBoxTOA = (MSGBOXAAPI)GetProcAddress(hUser32, "MessageBoxTimeoutA");//fall through to 'if (MsgBoxTOA)...'}else{//stuff happened, add code to handle it here //(possibly just call MessageBox())return 0;}}if (MsgBoxTOA){return MsgBoxTOA(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);}return 0;
}int MessageBoxTimeoutW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
{static MSGBOXWAPI MsgBoxTOW = NULL;if (!MsgBoxTOW){HMODULE hUser32 = GetModuleHandle(_T("user32.dll"));if (hUser32){MsgBoxTOW = (MSGBOXWAPI)GetProcAddress(hUser32, "MessageBoxTimeoutW");//fall through to 'if (MsgBoxTOW)...'}else{//stuff happened, add code to handle it here //(possibly just call MessageBox())return 0;}}if (MsgBoxTOW){return MsgBoxTOW(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);}return 0;
}
//End required definitions <--
2.2. 调用方式
#include "MsgBoxTimeout.h"
void CTestDlg::OnBnClickedButton2()
{//you must load user32.dll before calling the functionHMODULE hUser32 = LoadLibrary(_T("user32.dll"));if (hUser32){int iRet = 0;UINT uiFlags = MB_OK | MB_SETFOREGROUND | MB_SYSTEMMODAL | MB_ICONINFORMATION;iRet = MessageBoxTimeout(NULL, _T("Test a timeout of 2 seconds."),_T("MessageBoxTimeout Test"), uiFlags, 0, 2000);//iRet will = 1uiFlags = MB_YESNO | MB_SETFOREGROUND | MB_SYSTEMMODAL | MB_ICONINFORMATION;iRet = MessageBoxTimeout(NULL, _T("Test a timeout of 5 seconds."),_T("MessageBoxTimeout Test"), uiFlags, 0, 5000);//iRet will = MB_TIMEDOUT if no buttons pressed, button values otherwise//only unload user32.dll when you have no further need //for the MessageBoxTimeout functionFreeLibrary(hUser32);}
}
参考网址:http://blog.csdn.net/a379039233/article/details/49445207
关于弹出消息窗口的自动关闭相关推荐
- 个推透传消息设置通知栏展示 ios_手机通知栏消息太多,这招教你关闭弹出消息,立刻清爽...
我们平常在使用华为手机的时候,后台运行的应用会不断的推送消息.我们过一段时间就要清理一下通知栏,一天下来甚至要弄个几十次,搞得人心里是烦不胜烦!不知道你有没有这样的烦恼,小编这就带你从根本上解决问题, ...
- pyqt5子窗口跳出主窗口_弹出式窗口与 可用性,转换和跳出率
pyqt5子窗口跳出主窗口 Written by Cassandra Naji 由卡珊德拉·纳吉 ( Cassandra Naji)撰写 They go by many names - modal w ...
- ZH奶酪:Ionic中(弹出式窗口)的$ionicModal使用方法
Ionic中[弹出式窗口]有两种(如下图所示),$ionicModal和$ionicPopup; $ionicModal是完整的页面: $ionicPopup是(Dialog)对话框样式的,直接用Ja ...
- html生成小窗口,用JS制作9种弹出小窗口(HTML)
进入许多网站时,有弹出式小窗口,它们五花八门,使我们捉摸不透下面就来介绍用JS制作9种制作弹出小窗口: 1.最基本的弹出窗口代码 其实代码非常简单: window.open ("page.h ...
- JS设置弹出小窗口。
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警告.欢迎光顾之类的话或者作者想要特别提示的信息.其实制作这 ...
- vb html ie弹出窗口,VB6 统制IE弹出模式窗口
VB6 控制IE弹出模式窗口 最近一个小项目,开发一个插件,需要对一个第三方系统的网页内容进行操作.操作的内容还比较复杂.自然选择用BHO做. 做到一半卡住了,原因在于这个网站有一个showmodal ...
- 使用pyqt弹出消息提示框
使用pyqt弹出消息提示框 安装 pyqt 安装遇到问题 `No matching distribution found for PyQt5-Qt5>=5.15.2 (from pyqt5)` ...
- [转贴]去除迅雷广告和弹出广告窗口
清除默认配置状态弹出的广告: 1.在主界面点击"工具"-"配置",在"配置"窗口左边选择"高级"选项卡,把右边" ...
- layui弹出层之layer.open弹出iframe窗口·
layui弹出层之layer.open弹出iframe窗口· layer.open弹出iframe窗口 [1]该功能为案例,弹出iframe窗口显示上传数据 由于layui的弹出层每次执行layer. ...
最新文章
- About The FTP
- 3DSlicer13:Command Line Interface(CLI)
- EntityFramework附加实体
- x86服务器当虚拟化的存储,X86服务器虚拟化实施方案.doc
- python查询字符串是否包含某字符串_python 判断检测字符串中是否包含指定字符或字符串(比如:?)...
- 今天来聊聊 Redis 的主从复制
- 【elasticsearch系列】windows安装IK分词器插件
- 沾化区php学校,推进校地合作 助力产教融合:滨州市技术学院与沾化经济开发区举行签约仪式...
- 书籍之 Head First HTML与CSS
- ds18b20 c语言程序,ds18b20.c
- 服务器系统日志应怎么查看,怎么查看服务器操作系统日志
- RPA案例 | 电商使用超自动化平台提升运营精细化
- html手机号显示错误,手机号码被错误标记有救了 联通开通了查询清除服务
- OpenGL PowerVR SDK 编译:Could NOT find X11 (missing: X11_X11_INCLUDE_PATH X11_X11_LIB)
- 使用lettuce和redisTemplate操作redis cluster踩坑日记
- 怎样取消隐式推送_iPhone XS ios12系统隐式推送开启后怎么关闭
- php获得opcode,php opcode 缓存
- python用电度数设计_用Python实现一个爬取XX大学电费通知的小脚本
- cgb2008-京淘day04
- git lfs官网翻译
热门文章
- self_drive car_学习笔记--第8课:定位算法
- java古诗_java--补全诗句代码
- 天空飘彩带的css3代码_纯CSS3实现飘逸洒脱带有飞行效果的三级下拉菜单
- Elastic Search:(二)分词器
- 51-Jenkins-Periodic Backup插件实现Jenkins备份
- 黑马程序员——网络编程
- 铁甲雄心机器人冠军_《铁甲雄心》第二季首播 优必选科技引领中国AI机器人进击之路...
- SqlDataReader转换为DataTable
- C++ RegSetValueEx返回值始终为5
- Python 网络爬虫实战:猫眼电影 38950 条评论数据告诉你《无名之辈》是否值得一看?