RegisterRawInputDevices()正在生成ERROR_FILE_NOT_FOUND

时间:2015-02-26 23:41:07

标签: c++ windows raw-input

当我的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错误?我没有在文档中看到任何有用的参考资料。有没有人有这方面的经验?

2 个答案:

答案 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] )

希望这对其他人有帮助,因为我也遇到了一些麻烦!