Qt+普通遙感手柄+Windows+Winmm

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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章