【发布时间】:2019-07-09 06:34:39
【问题描述】:
我正在尝试将 Raw Input API 与 Qt 一起使用,以便我可以记录键盘事件和鼠标事件。但是,此代码不成功。我也是 Raw Input API 的初学者。
我尝试使用调试器,发现 WM_INPUT 没有执行。 Qt有什么问题吗?
而且我的 MainWin 也只是冻结了。
main.cpp
#include <QApplication>
#include "MainWin.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWin mainw;
mainw.show();
RAWINPUTDEVICE rid[2];
rid[0].usUsagePage = 0x01;
rid[0].usUsage = 0x02;
rid[0].dwFlags = RIDEV_NOLEGACY;
rid[0].hwndTarget = 0;
rid[1].usUsagePage = 0x01;
rid[1].usUsage = 0x06;
rid[1].dwFlags = RIDEV_NOLEGACY;
rid[1].hwndTarget = 0;
if (RegisterRawInputDevices(rid, 2, sizeof(RAWINPUTDEVICE)) == false)
exit(-1);
return a.exec();
}
MainWin.cpp
#include "MainWin.h"
MainWin::MainWin()
{
}
MainWin::~MainWin()
{
}
bool MainWin::nativeEventF(const QByteArray & eventType, void * message, long * result)
{
MSG * msg = (MSG*)message;
switch (msg->message)
{
case WM_INPUT:
qDebug() << "in";
break;
}
return false;
}
我的实现有问题吗?
【问题讨论】:
-
也尝试了 RIDEV_INPUTSINK 但 nothong 工作
-
stackoverflow.com/help/mcve MainWin.h 在哪里?
-
什么是
nativeEventF,除了nativeEvent的拼写错误?