GetMessage的第二个参数

疑问


为什么GetMessage的第二个参数制定为hwnd后,应用程序无法退出?

解释

MSDN中指出:

当第二个参数为NULL时,GetMessage取得那些属于调用线程的窗口的消息和通过PostThreadMessage函数投递到调用线程的线程消息。

GetMessage需要检索到WM_QUIT返回一个FALSE结束消息循环, 而WM_QUIT是通过PostQuitMessage发送, 属于线程消息, 而非普通的窗口消息。

如果在GetMessage中用hWnd而不是NULL, 虽然WM_QUIT 消息仍会出现在程序的消息队列中,但GetMessage却无法检索到, 而且此时窗口已经被销毁了, 如果还

想取得hWnd的窗口消息, 只可能发生错误(GetMessage返回-1,而不是0)

建议

1)第二个参数设为NULL

2)写成

 1 BOOL bRet;
2 while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
3 {
4 if (bRet == -1)
5 {
6 // handle the error and possibly exit
7 }
8 else
9 {
10 TranslateMessage(&msg);
11 DispatchMessage(&msg);
12 }
13 }

GetMessage的第二个参数,码迷,mamicode.com

时间: 2024-10-10 04:56:25

GetMessage的第二个参数的相关文章

[ jquery 过滤器 nextUntil([exp|ele][,fil]) ] 此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,方法返回 selector 与 stop 之间的每个元素之后的所有同级元素,并且提供第二个参数来用于实现过滤效果,多个参数使用逗号相隔

此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,方法返回 selector 与 stop 之间的每个元素之后的所有同级元素,并且提供第二个参数来用于实现过滤效果,多个参数使用逗号相隔,参数解释如下: 概述: 查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止. 如果提供的jQuery代表了一组DOM元素,.nextUntil()方法也能让我们找遍所有元素所在的DOM树,直到遇到了一个跟提供的参数匹配的元素的时候才会停下来.这个新jQuery对象里包含了下面所有找到的同辈元素

JavaScript中使用函数做replace的第二个参数

通过第一个例子来全面看下作replace第二个参数的函数的参数....听起来是有点绕→_→ 例: //第一参数为正则表达式 1 var url = "http://www.softwhy.com/forum.php?mod=viewthread&tid=14743&extra=page%3D1"; 2 console.group("正则表达式"); 3 var regexp_global = /[?&](\w+)=([^&]*)/g;

addEventListener的第二个参数——listener

addEventListener() 方法是将指定的事件监听器注册到目标对象上,当该对象触发指定的事件时,指定的回调函数就会被执行.语法: element.addEventListener(type, listener[, useCapture]); 其中listener:当指定的事件类型发生时被通知到的一个对象.该参数必是实现EventListener接口的一个对象或函数. 即,第二个参数除了可以传入函数外,还可以传入对象. 那么实现EventListener接口的对象有什么特征呢? // 注

jQuery()方法的第二个参数

关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 context.find(selector) 2.jQuery(html, [ownerDocument]) 文档对ownerDocument的解释是:“创建DOM元素所在的文档” 也就是说,如果你要编写挎document的脚本,比如iframe或者用window.open开一个新窗口,可能会用得着它 3

getAttribute()方法的第二个参数

对于一个img元素,我们想获取它的src属性时可以有两种方式: 1.xxx.getAttribute("src") 2.直接通过xxx.src获取属性值 在src的属性值为相对路径时,这两者的结果在不同浏览器会有一些不同哦. 以此为例: var img=document.getElementById('logo'); alert("src:"+img.src); // iE7-: src:http://localhost/test/images/logo.png /

js中parseFloat(第一个参数,第二个参数)中第二个参数的解释

今天在看jquery的时候里面用到了parseFloat(第一个参数,10),一直不懂第二个参数是什么意思,于是上网查了一下,怕以后忘记就转了下来. 定义和用法:parseFloat() 函数可解析一个字符串,并返回一个浮点数. 语法:parseFloat(string),参数string是必须的,表示要被解析的字符串 返回值:返回解析后的数字 注意事项: 1.开头和结尾的空格是允许的. 2.如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN 3.如果只想解析

parseInt神秘的第二个参数

前阵子在stackOverflow上看到两个这样的问题: 为什么parseInt(8,3) == NaN,parseInt(16,3) == 1? 为什么parseInt('dsff66',16) == 13? parseInt大家应该都很熟悉了,我们一般用他来把一个小数或字符串转换为整数,正常情况下我们都是这样做的: parseInt(11.2)//返回11 parseInt(‘13’)//返回Number类型的13 但是parseInt的第二个参数很多朋友就不太清楚了,因为本身就很少使用第二

TP关于create方法的第二个参数

TP create方法第二个参数,指定创建数据的操作状态:默认情况下是自动判断是写入还是更新操作: 也可以显式指定操作状态,例如: $Member = M("User"); // 指定更新数据操作状态 $Member->create($_POST,Model::MODEL_UPDATE); 系统内置的数据操作包括Model::MODEL_INSERT(或者1)和Model::MODEL_UPDATE(或者2),当没有指定的时候,系统根据数据源是否包含主键数据来自动判断,如果存在主

学习 Message(5): 关于 TApplicationEvents.OnMessage 的第二个参数 可以屏蔽 TWebBrowser右键菜单:

http://www.cnblogs.com/del/archive/2008/10/25/1319318.html TApplicationEvents.OnMessage 的第二个参数 Handled 如果是 True, 表示消息已经处理过了, 到此为止. unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, AppE