MakeKeyLparam 的简化

1 . MakeKeyLparam 是个函数.

2.  MakeKeyLparam 用于构造 消息的 LPARAM

3.  MakeKeyLparam 来自VB ?

4. MakeKeyLparam  的简化:

int MakeKeyLparam(/* int VirtualKey ,*/ int flag)
{
    UINT sCode;
//Firstbyte ; lparam 参数的 24-31位
UINT Firstbyte;
    switch (flag)
    {
      case WM_KEYDOWN:    Firstbyte = 0;   break;
      case WM_KEYUP:      Firstbyte = 0xC0;break;
      case WM_CHAR:       Firstbyte = 0x20;break;
      case WM_SYSKEYDOWN: Firstbyte = 0x20;break;
      case WM_SYSKEYUP:   Firstbyte = 0xE0;break;
      case WM_SYSCHAR:    Firstbyte = 0xE0;break;
    }
// 键的扫描码; lparam 参数 的 16-23位
// 16–23 Specifies the scan code. 
// UINT iKey = MapVirtualKey(VirtualKey, 0);
// 1为 lparam 参数的 0-15位,即发送次数
// 0–15 Specifies the repeat count for the current message. 
    sCode = (Firstbyte << 24) +1;// + (iKey << 16) + 1; 
    return sCode;
}

5. MakeKeyLparam 的使用“

发送alt+f 到 notepad:

::PostMessage(hwnd, WM_SYSKEYDOWN, VK_MENU, MakeKeyLparam(WM_SYSKEYDOWN));
::PostMessage(hwnd, WM_SYSKEYDOWN, 'F', MakeKeyLparam(WM_SYSKEYDOWN));
::PostMessage(hwnd, WM_CHAR, 'F', MakeKeyLparam(WM_CHAR));
::PostMessage(hwnd, WM_SYSKEYUP, 'F', MakeKeyLparam(WM_SYSKEYUP));
::PostMessage(hwnd, WM_KEYUP, VK_MENU, MakeKeyLparam(WM_KEYUP));

//

阅读更多
文章标签: Message MakeKeyLparam
个人分类: 计算机 MFC
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭