我使用winapi的原始輸入設備進行鼠標輸入,看起來我沒有在我的RAWMOUSE結構中獲得正確的值。原始輸入設備RAWMOUSE使用
當我拿到RAWMOUSE結構,我得到lLastX和lLastY如我期望的值,但由於某些原因,ulRawButtons是不斷0 MSDN文檔說,ulRawButtons是「的原鼠標按鈕的狀態「所以我認爲這應該改變,當我按下鼠標按鈕。
這是我創建與原始輸入裝置的代碼(I移除錯誤檢查的可讀性):
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.
}
}
我:
RAWINPUTDEVICE rid;
rid.usUsagePage = 0x01;
rid.usUsage = 0x02;
rid.dwFlags = RIDEV_INPUTSINK;
rid.hwndTarget = myWindowHandle;
RegisterRawInputDevices(&rid, 1, sizeof(rid));
的WM_INPUT消息我打電話後使用mingw32(4.7)和我已經定義WIN32_LEAN_AND_MEAN,WINVER = 0x0501和WIN32_WINNT = 0x0501。
任何想法,爲什麼我沒有得到ulRawButtons的正確值?
該值直接來自設備驅動程序。也許你有一個古怪的依賴於使用usButtonFlags的Windows。 –
來自Microsoft MSDN網站的演示代碼,主題爲「使用原始輸入」,網址爲https://msdn.microsoft.com/en-us/library/ms645546(v=vs.85).aspx提供了兩個鍵盤的示例和鼠標,作爲@Sean Cline在他的回答中提到,我在Win32窗口應用程序中使用這個演示代碼顯示'data.mouse.ulButtons'和'data.mouse.usButtonFlags'都會隨着我點擊鼠標墊按鈕而改變值然而,我的筆記本電腦'data.mouse.ulRawButtons'似乎總是爲零。 –