2014-09-13 69 views
1

我发现以下帖子非常有用做我自己的项目。接下来是新手问题:我必须包含哪些内容才能起作用?什么#包括关于窗口,原始鼠标数据代码

链接How to accurately measure mouse movement in inches or centimetres for a mouse with a known DPI

内容

以下代码注册RAWINPUTDEVICE因此它可以在WM_INPUT使用。

RAWINPUTDEVICE Rid[1]; 
Rid[0].usUsagePage = HID_USAGE_PAGE_GENERIC; 
Rid[0].usUsage = HID_USAGE_GENERIC_MOUSE; 
Rid[0].dwFlags = RIDEV_INPUTSINK; 
Rid[0].hwndTarget = hWnd; 
RegisterRawInputDevices(Rid, 1, sizeof(Rid[0]); 

下面的代码实际上可以使用RID变量2确定鼠标已经多少像素自从上次WM_INPUT启动了移动。

case WM_INPUT: 
{ 
    UINT dwSize = 40; 
    static BYTE lpb[40]; 

    GetRawInputData((HRAWINPUT)lParam, RID_INPUT, 
        lpb, &dwSize, sizeof(RAWINPUTHEADER)); 

    RAWINPUT* raw = (RAWINPUT*)lpb; 

    if (raw->header.dwType == RIM_TYPEMOUSE) 
    { 
     int xPosRelative = raw->data.mouse.lLastX; // Could be 1, or could be more than 1 
     int yPosRelative = raw->data.mouse.lLastY; // Could be 1, or could be more than 1! 
    } 
    break; 
} 

回答

相关问题