GetMessage()函数使用时的注意

简介: GetMessage()函数使用时的注意

      GetMessage()函数是一个很常见的函数,如果使用SDK写过Windows程序的话,那么就更不陌生,该函数的返回值值得注意的地方,因为最近在看Win32汇编的书,书中提到了这个函数。但是发现对于该函数的判断也是不对的。把MSDN上对该函数的返回值的介绍留在这里吧。MSDN中的内容都是英文的,不过还是比较好理解的。

      以下摘自微软的MSDN:

Return Values
If the function retrieves a message other than WM_QUIT, the return value is nonzero.
If the function retrieves the WM_QUIT message, the return value is zero.
If there is an error, the return value is -1. For example, the function fails if hWnd is an invalid window handle or lpMsg is an invalid pointer. To get extended error information, call GetLastError.
Warning  Because the return value can be nonzero, zero, or -1, avoid code like this:
while (GetMessage( lpMsg, hWnd, 0, 0)) ... 
The possibility of a -1 return value means that such code can lead to fatal application errors. Instead, use code like this:
BOOL bRet;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{ 
    if (bRet == -1)
    {
        // handle the error and possibly exit
    }
    else
    {
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
}
相关文章
|
3月前
|
Shell PHP
escapeshellarg() 函数
escapeshellarg() 函数
|
3月前
|
存储 Python
有效的函数(一)
有效的函数(一)
20 0
|
7月前
|
存储 编译器 C++
|
5月前
写一个函数
【7月更文挑战第4天】写一个函数。
37 2
|
7月前
|
前端开发 JavaScript
Less的函数的介绍
Less的函数的介绍
65 0
|
Python
什么是函数
什么是函数
100 0
javaSprict 03 函数的使用
本文将讲述javaSprict中函数的声明,调用方法
javaSprict 03 函数的使用
|
JavaScript 前端开发 API
h函数为什么叫h?
h函数为什么叫h?
272 0
|
数据安全/隐私保护
十、详解函数柯里【上】
柯里化是函数的一个高级应用,想要理解它并不简单。因此我一直在思考应该如何更加表达才能让大家理解起来更加容易。 通过上一个章节的学习我们知道,接收函数作为参数的函数,都可以叫做高阶函数。我们常常利用高阶函数来封装一些公共的逻辑。 这一章我们要学习的柯里化,其实就是高阶函数的一种特殊用法。
160 0