手柄爲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中。
開啓線程在子線程中定時讀取遙感數據;然後通過信號槽實現具體按鈕功能。