我们有一个传统的C ++应用程序,只需要按下操纵杆按钮(它用于脚踏控制,并对某些摄像机上的按钮按下作出反应)。在某些系统上,我们遇到的问题是,只需注册接收输入就会导致WM_INPUT消息不断泛滥。这只是窗口启动时的代码:
RAWINPUTDEVICE rid;
memset(&rid, 0, sizeof(RAWINPUTDEVICE));
rid.usUsagePage = 0x01;
rid.usUsage = 0x04; // Joystick
rid.dwFlags = 0;
rid.hwndTarget = _hwnd;
if (RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE)) == FALSE)
return false;
WM_INPUT收到一堆没有数据的消息(bRawData为空)。如果我注释掉注册,一切都按预期工作(但显然没有按钮支持)。正如我所说,这并不是在所有系统上都会发生,但我们在它们发生的系统中没有发现任何共同的模式。
有没有人经历过这样的事情?