MessageBox(hWnd,"RawInput Register Error.","RawInput init
failed!",MB_OK);
}
这里需要注意的是并不是有多少个鼠标输入就需要注册多少个RawInput设备,一般来说,注册一个RawInput设备处理目前焦点的原始输入数据就足够了,同样可以获得所有的鼠标原始输入数据。除非想对不同焦点的原始输入数据进行处理,才需要注册多个usUsagePage
与usUsage
不同的RawInput设备。
第三步:调用GetRawInputData函数获得pData大小。这里要说明的是GetRawInputData一般要在响应WM_INPUT消息时调用,不能随时调用。GetRawInputData函数原型如下:
UINT GetRawInputData(
HRAWINPUT
hRawInput,
UINT
uiCommand,
LPVOID
pData,
PUINT
pcbSize,
UINT
cbSizeHeader
); GetRawInputData第一参数为一个RAWINPUT结构的句柄,来自WM_INPUT消息的lParam
参数。要说明的是GetRawInputData并不是一个随时调用以检测有无RawInput设备输入的函数,实际上是一个对WM_INPUT消息的lParam
参数的解析函数,主要用途是从WM_INPUT消息的lParam
参数中提取出有用的信息,并加以组织成一个RAWINPUT结构输出,当然,由于WM_INPUT消息的lParam<