我正在使用 winapi 的原始输入设备进行鼠标输入,看来我的 RAWMOUSE 结构中没有得到正确的值。
当我得到 RAWMOUSE 结构时,我得到了我期望的lLastX和lLastY的值,但由于某种原因,ulRawButtons始终为 0。msdn 文档说 ulRawButtons 是“鼠标按钮的原始状态”所以我把它当我按下鼠标按钮时应该会改变。
这是我创建原始输入设备的代码(为了便于阅读,我删除了错误检查):
RAWINPUTDEVICE rid;
rid.usUsagePage = 0x01;
rid.usUsage = 0x02;
rid.dwFlags = RIDEV_INPUTSINK;
rid.hwndTarget = myWindowHandle;
RegisterRawInputDevices(&rid, 1, sizeof(rid));
在WM_INPUT消息之后,我调用:
void handleRawInput(HWND window, UINT, WPARAM wParam, LPARAM lParam)
{
RAWINPUT input;
UINT szData = sizeof(input), szHeader = sizeof(RAWINPUTHEADER);
HRAWINPUT handle = reinterpret_cast<HRAWINPUT>(lParam);
GetRawInputData(handle, RID_INPUT, &input, &szData, szHeader);
if (input.header.dwType == RIM_TYPEMOUSE)
{
// Here input.data.mouse.ulRawButtons is 0 at all times.
}
}
我正在使用 mingw32 (4.7) 并且我已经定义了WIN32_LEAN_AND_MEAN、WINVER=0x0501和WIN32_WINNT=0x0501。
任何想法为什么我没有得到 ulRawButtons 的正确值?