JOYINFO joyinfo;
UINT wNumDevs, wDeviceID;
BOOL bDev1Attached, bDev2Attached;
if((wNumDevs = joyGetNumDevs()) == 0)
return -1; // ドライバーがない
bDev1Attached = joyGetPos(JOYSTICKID1,&joyinfo) != JOYERR_UNPLUGGED;
bDev2Attached = wNumDevs == 2 && joyGetPos(JOYSTICKID2,&joyinfo) != JOYERR_UNPLUGGED;
if(bDev1Attached || bDev2Attached) // どのjoysticIDを使うか決定する
wDeviceID = bDev1Attached ? JOYSTICKID1 : JOYSTICKID2;
else
return -2; // joystickがつながってない
|
JOYINFO joyinfo;
UINT wDeviceID = JOYSTICKID1;
MMRESULT r=joyGetPos(wDeviceID,&joyinfo);
if(r==JOYERR_NOERROR)
{
// ボタン
if(joyinfo.wButtons & JOY_BUTTON1)
{
MessageBox(0,"ボタン1が押されました","",MB_OK);
}
if(joyinfo.wButtons & JOY_BUTTON2)
{
MessageBox(0,"ボタン2が押されました","",MB_OK);
}
// 方向キー
if(joyinfo.wXpos>0xbfff)
{
MessageBox(0,"右キーが押されました","",MB_OK);
}
if(joyinfo.wXpos<0x3fff)
{
MessageBox(0,"左キーが押されました","",MB_OK);
}
}
|
typedef struct {
UINT wXpos;
UINT wYpos;
UINT wZpos;
UINT wButtons;
} JOYINFO;
メンバ| JOY_BUTTON1 | ボタン1が押されている (値: 0x0001) |
| JOY_BUTTON2 | ボタン2が押されている (値: 0x0002) |
| JOY_BUTTON3 | ボタン3が押されている (値: 0x0004) |
| JOY_BUTTON4 | ボタン4が押されている (値: 0x0008) |
MMRESULT joyGetPos( UINT uJoyID, LPJOYINFO pji );引数
| MMSYSERR_NODRIVER | ジョイスティックのドライバーが存在しません。 |
| MMSYSERR_INVALPARAM | 不正な引数が渡されました。 |
| JOYERR_UNPLUGGED | 指定されたジョイスティックはつながっていません。 |
case WM_CREATE:
if(joySetCapture(hWnd, JOYSTICKID1, NULL, FALSE))
{
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(hWnd, "Couldn't capture the joystick.", NULL,
MB_OK | MB_ICONEXCLAMATION);
PostMessage(hWnd,WM_CLOSE,0,0L);
}
break;
|
MM_JOY1BUTTONDOWN fwButtons = wParam; xPos = LOWORD(lParam); yPos = HIWORD(lParam);パラメータ
| JOY_BUTTON1CHG | ボタン1の状態が変化した |
| JOY_BUTTON2CHG | ボタン2の状態が変化した |
| JOY_BUTTON3CHG | ボタン3の状態が変化した |
| JOY_BUTTON4CHG | ボタン4の状態が変化した |
| JOY_BUTTON1 | ボタン1が押されている |
| JOY_BUTTON2 | ボタン2が押されている |
| JOY_BUTTON3 | ボタン3が押されている |
| JOY_BUTTON4 | ボタン4が押されている |