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;
}