手柄为2遥感+多按钮
qt使用Windows自带的库Winmm
添加库和头文件
.pro中添加:
LIBS += -lWinmm
.h文件中添加:
#include "windows.h" #include "w32api.h" #include "winuser.h" #include "mmsystem.h"
主要使用JOYINFO、和
JOYINFOEX这两个类;通过这两个类的对象绑定手柄,对手柄数据进行读取。
JOYINFO结构体
typedef struct joyinfo_tag {
UINT wXpos;
UINT wYpos;
UINT wZpos;
UINT wButtons;
} JOYINFO,*PJOYINFO,NEAR *NPJOYINFO,*LPJOYINFO;
JOYINFOEX结构体
typedef struct joyinfoex_tag {
DWORD dwSize;
DWORD dwFlags;
DWORD dwXpos;
DWORD dwYpos;
DWORD dwZpos;
DWORD dwRpos;
DWORD dwUpos;
DWORD dwVpos;
DWORD dwButtons;
DWORD dwButtonNumber;
DWORD dwPOV;
DWORD dwReserved1;
DWORD dwReserved2;
} JOYINFOEX,*PJOYINFOEX,NEAR *NPJOYINFOEX,*LPJOYINFOEX;
在读取时先要对JOYINFOEX对象初始化,主要初始化dwsize 和dwFlags这两个属性
joyinfoex.dwSize = sizeof(JOYINFOEX);
joyinfoex.dwFlags = JOY_RETURNALL;
joyGetNumDevs()方法可以返回接入的joystick设备的数目,最多支持两个手柄
joyGetPosEx(UINT uJoyID,LPJOYINFOEX pji); 读取uJoyID手柄的输入数据,读取结果存放在pji中;pji为JOYINFOEX对象
按键的信息在dwbutton属性中读取,方向在dwXpos,dwYpos,dwZpos中。
开启线程在子线程中定时读取遥感数据;然后通过信号槽实现具体按钮功能。