键盘钩子回调函数中的lParam & 0x80000000

看到一个键盘钩子的回调函数如下:

LRESULT CALLBACK LaunchHook(int nCode, WPARAM wParam, LPARAM lParam)
{
     LRESULT Result = CallNextHookEx(kbHook, nCode, wParam, lParam);

    if (nCode == HC_ACTION)
    {
        if (lParam & 0x80000000)
        {
             TCHAR c[1];
             c[0] = wParam;
             SaveLog(c);
        }
    }
    return Result;
}

对其中的lParam & 0x80000000不理解,在网上搜索了一下,解释是lParam的最高位为1代表键盘Up,0代表键盘down,最终我还是在msdn中找到了详细解释:

lParam的各位信息:

 

键盘钩子回调函数中的lParam & 0x80000000_第1张图片

而Transition-state flag的详细解释如下:

Transition-State Flag

The transition-state flag indicates whether pressing a key or releasing a key generated the keystroke message. This flag is always set to 0 for WM_KEYDOWN and WM_SYSKEYDOWN messages; it is always set to 1 for WM_KEYUP and WM_SYSKEYUP messages.

关于更多信息,大家可以参考msdn的“About Keyboard Input”。

你可能感兴趣的:(键盘钩子回调函数中的lParam & 0x80000000)