有关Windows原始鼠标数据的代码应该#include哪些内容?

5
我发现以下帖子对我自己的项目非常有用。那么新手问题来了:为使其工作,我必须包括什么?
链接: 如何准确测量已知 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变量来确定鼠标自上次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;
}
2个回答

5

我刚刚找到了它。
#include "hidusage.h"

这里是它所包含的一些定义。

#define HID_USAGE_GENERIC_POINTER ((USAGE) 0x01)
#define HID_USAGE_GENERIC_MOUSE ((USAGE) 0x02)
#define HID_USAGE_GENERIC_JOYSTICK ((USAGE) 0x04)
#define HID_USAGE_GENERIC_GAMEPAD ((USAGE) 0x05)
#define HID_USAGE_GENERIC_KEYBOARD ((USAGE) 0x06)
#define HID_USAGE_GENERIC_KEYPAD ((USAGE) 0x07)
#define HID_USAGE_GENERIC_SYSTEM_CTL ((USAGE) 0x80)

typedef USHORT USAGE,*PUSAGE;

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接