当我的Windows应用程序(游戏)启动时,我将其注册以接收原始输入消息:
RAWINPUTDEVICE Rid[2];
Rid[0].usUsagePage = HID_USAGE_PAGE_GENERIC; // 0x01
Rid[0].usUsage = HID_USAGE_GENERIC_MOUSE; // 0x02
Rid[0].dwFlags = RIDEV_INPUTSINK;
Rid[0].hwndTarget = sMainWindow; // HWND from created window
Rid[1].usUsagePage = HID_USAGE_PAGE_GENERIC; // 0x01
Rid[1].usUsage = HID_USAGE_GENERIC_KEYBOARD; // 0x06
Rid[1].dwFlags = RIDEV_INPUTSINK;
Rid[1].hwndTarget = sMainWindow;
BOOL result = RegisterRawInputDevices( Rid, 2, sizeof( Rid[0] ) );
if( !result )
{
EGSystemError( "RegisterRawInputDevices Error: ", GetLastError() );
}
此游戏已发布,许多用户似乎没有遇到任何问题,但我有一位用户收到错误消息:
"RegisterRawInputDevices Error: The system cannot find the file specified"
所以,问题是 - 为什么 RegisterRawInputDevices()会产生ERROR_FILE_NOT_FOUND错误?我没有在文档中看到任何有用的参考资料。有没有人有这方面的经验?
答案 0 :(得分:1)
以上评论不正确或规格不正确
MSDN正在报告https://msdn.microsoft.com/it-it/library/windows/desktop/ms645600(v=vs.85).aspx
cbSize [in] 输入:UINT RAWINPUTDEVICE结构的大小(以字节为单位)。
答案 1 :(得分:0)
这不起作用的原因是因为RAWINPUTDEVICE
只传递了一个sizeof
结构。它应该是这样的..
sizeof( Rid )
不
sizeof( Rid[0] )
希望这对其他人有帮助,因为我也遇到了一些麻烦!