PeekMessage和GetMessage函数的主要区别
来源:互联网 发布:做网络的好处有哪些 编辑:程序博客网 时间:2024/06/02 03:33
经网络资料查找以及MSDN资源查找,整合出PeekMessage函数和GetMessage函数的主要区别,内容比较全,也有应用代码说明。
联系:
在Windows的内部,GetMessage和PeekMessage执行着相同的代码,Peekmessage和Getmessage都是向系统的消息队列中取得消息,并将其放置在指定的结构。
区别:
PeekMessage:
有消息时返回TRUE,没有消息返回FALSE, 不区分该消息是否为WM_QUIT。
GetMessage :
1. 有消息时且消息不为WM_QUIT时返回TRUE;
2. 如果有消息且为WM_QUIT则返回FALSE;
3. 如果出现错误,函数返回-1;
4. 没有消息时该函数不返回,会阻塞,直到消息出现。
对于取得消息后的不同行为:
GetMessage :取得消息后,删除除WM_PAINT消息以外的消息。
PeekMessage:取得消息后,根据wRemoveMsg参数判断是否删除消息。PM_REMOVE则删除,PM_NOREMOVE不删除。
函数原型和消息循环:
GetMessage说明
//函数原型BOOL GetMessage( LPMSG lpMsg, // address of structure with message HWND hWnd, // handle of window UINT wMsgFilterMin, // first message UINT wMsgFilterMax // last message);//消息循环//Because the return value can be nonzero, zero, or -1,遇到WM_QUIT退出while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0){ if (bRet == -1) { // handle the error and possibly exit,异常情况处理 } else { TranslateMessage(&msg); DispatchMessage(&msg); }}
PeekMessage说明
//函数原型:BOOL PeekMessage( LPMSG lpMsg, // pointer to structure for message HWND hWnd, // handle to window UINT wMsgFilterMin, // first message UINT wMsgFilterMax, // last message UINT wRemoveMsg // removal flags);//消息循环while (TRUE){ if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) break; TranslateMessage (&msg); DispatchMessage (&msg); } else { // 处理空闲任务 } }
参考文章:
1. http://blog.sina.com.cn/s/blog_8a7012cf010151cr.html
2. MSDN说明文档
阅读全文
1 0
- PeekMessage和GetMessage函数的主要区别
- PeekMessage和GetMessage函数的主要区别
- PeekMessage和GetMessage函数的主要区别
- PeekMessage和GetMessage函数的主要区别
- GetMessage()和PeekMessage()几个主要区别
- Peekmessage和Getmessage的区别
- GetMessage和 PeekMessage 的区别
- Peekmessage和Getmessage的区别
- Peekmessage和Getmessage的区别
- Peekmessage和Getmessage的区别
- Peekmessage和Getmessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- PeekMessage和GetMessage的区别
- GetMessage和PeekMessage的区别
- GetMessage和PeekMessage的区别
- IAR工作环境配置
- Word中的页码问题
- 键盘的接口类型
- 为什么我的windows 10 电脑关机时,电脑灯延迟很久才熄灭?
- 笔记本电脑常用的接口
- PeekMessage和GetMessage函数的主要区别
- nginx简单双机热备:backup参数的使用
- [最大似然估计 MLE] Codeforces 802DEF Helvetic Coding Contest 2017 D. E. F. Marmots
- Apache KafKa阅读官方文档心得
- SQL基础
- Mac下配置anaconda,caffe(cpu)xcode&git
- SQL总结
- oracle 监听启动报错:the listener supports no services
- 亲密数