91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

RAWINPUT-如何獲取鼠標滾輪數據

小云
141
2023-09-26 07:54:37
欄目: 智能運維

要獲取鼠標滾輪數據,可以使用Windows的RAWINPUT API。以下是一種獲取鼠標滾輪數據的方法:

  1. 使用RegisterRawInputDevices函數注冊原始輸入設備。在注冊時,指定RAWINPUTDEVICE結構體的參數。
RAWINPUTDEVICE Rid[1];
Rid[0].usUsagePage = 0x01; // 鼠標
Rid[0].usUsage = 0x02;     // 鼠標中鍵和滾輪
Rid[0].dwFlags = RIDEV_INPUTSINK;
Rid[0].hwndTarget = hwnd;  // 接收消息的窗口句柄
if (!RegisterRawInputDevices(Rid, 1, sizeof(Rid[0]))) {
// 注冊失敗的處理
}
  1. 在窗口的消息處理函數中,處理WM_INPUT消息。當接收到WM_INPUT消息時,可以使用GetRawInputData函數獲取原始輸入數據。
case WM_INPUT:
{
UINT dataSize;
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dataSize, sizeof(RAWINPUTHEADER));
char* buffer = new char[dataSize];
if (GetRawInputData((HRAWINPUT)lParam, RID_INPUT, buffer, &dataSize, sizeof(RAWINPUTHEADER)) != dataSize) {
// 獲取輸入數據失敗的處理
}
RAWINPUT* raw = (RAWINPUT*)buffer;
if (raw->header.dwType == RIM_TYPEMOUSE) {
if (raw->data.mouse.usButtonFlags & RI_MOUSE_WHEEL) {
// 判斷是否為鼠標滾輪數據
SHORT wheelDelta = (SHORT)raw->data.mouse.usButtonData;
// 處理鼠標滾輪數據
delete[] buffer;
return 0;
}
}
delete[] buffer;
}
break;

在上述代碼中,我們首先獲取原始輸入數據的大小,然后分配一個緩沖區來存儲數據。接著,我們使用GetRawInputData函數獲取原始輸入數據。然后,我們可以檢查RAWINPUT結構體的dwType字段是否為RIM_TYPEMOUSE,以確定該輸入是否為鼠標數據。如果是鼠標數據,我們可以檢查usButtonFlags字段是否包含RI_MOUSE_WHEEL標志,以確定該輸入是否為鼠標滾輪數據。如果是滾輪數據,我們可以使用usButtonData字段來獲取滾輪的偏移量。

請注意,上述代碼僅處理鼠標滾輪數據,并假定你已經創建了一個窗口并獲得了該窗口的句柄(hwnd)。如果你需要處理其他類型的原始輸入數據,可以修改使用的參數和處理邏輯。

0
安义县| 康保县| 大安市| 灵台县| 绥宁县| 乌拉特中旗| 会昌县| 辽中县| 郓城县| 女性| 肥西县| 平果县| 库伦旗| 吉安市| 常宁市| 桐梓县| 凤庆县| 金沙县| 彰化县| 共和县| 边坝县| 西充县| 新乡县| 兰考县| 榆社县| 泸西县| 江口县| 全南县| 石河子市| 青河县| 芜湖市| 贡嘎县| 泰来县| 若尔盖县| 龙泉市| 本溪| 南陵县| 蒙山县| 太谷县| 富阳市| 祁阳县|