亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
南皮县| 汶川县| 绩溪县| 漳浦县| 东至县| 鹰潭市| 玉门市| 九寨沟县| 卫辉市| 双城市| 罗江县| 石台县| 个旧市| 绥芬河市| 德钦县| 凉山| 廉江市| 澄江县| 静海县| 平阳县| 陆河县| 晋宁县| 连州市| 永川市| 邵东县| 汝州市| 全南县| 虎林市| 卓资县| 和静县| 宽城| 广汉市| 垦利县| 辽阳市| 英超| 离岛区| 连山| 新兴县| 古浪县| 分宜县| 湄潭县|