어디다 넣어야 하는지 몰라서 대충.. 투척
일단 winmm.lib를 링크 해야 하고
winmm.dll을 해도 된다는데 dll은 쓸줄 모르니 패스 -ㅁ-
windows.h와 MMSystem.h를 포함하면된다.
사용한 함수들은 아래 예제 참고.
요즘 조이스틱은 4축 지원(X/Y/Z/R)를 많이 지원하므로
joyGetPos보다는 joyGetPosEx를 사용하는 것이 좋을듯 하다.
버튼은 1번 부터 1bit씩 LBS에서 MBS로 하나씩 올라간다(버튼이 12개 있으면 2^12 = 2048까지 올라가게 된다.
드라이버의 이름(제품명)은 Unicode로 저장되어 있으니 필요하면 %S로 출력하면 된다.
[링크 : http://msdn.microsoft.com/en-us/library/ms709377.aspx]
[링크 : http://msdn.microsoft.com/en-us/library/ms709352.aspx] joyGetPos
[링크 : http://msdn.microsoft.com/en-us/library/ms709359.aspx] JOYINFO
[링크 : http://msdn.microsoft.com/en-us/library/ms709354.aspx] joyGetPosEx
[링크 : http://msdn.microsoft.com/en-us/library/ms709358.aspx] JOYINFOEX
[링크 : http://msdn.microsoft.com/en-us/library/ms709350.aspx] joyGetDevCaps
[링크 : http://msdn.microsoft.com/en-us/library/ms709348.aspx] JOYCAPS
일단 winmm.lib를 링크 해야 하고
winmm.dll을 해도 된다는데 dll은 쓸줄 모르니 패스 -ㅁ-
windows.h와 MMSystem.h를 포함하면된다.
사용한 함수들은 아래 예제 참고.
요즘 조이스틱은 4축 지원(X/Y/Z/R)를 많이 지원하므로
joyGetPos보다는 joyGetPosEx를 사용하는 것이 좋을듯 하다.
버튼은 1번 부터 1bit씩 LBS에서 MBS로 하나씩 올라간다(버튼이 12개 있으면 2^12 = 2048까지 올라가게 된다.
드라이버의 이름(제품명)은 Unicode로 저장되어 있으니 필요하면 %S로 출력하면 된다.
#include "stdafx.h" #include "windows.h" #include "MMSystem.h" int _tmain(int argc, _TCHAR* argv[]) { JOYINFO joyinfo; JOYINFOEX joyinfo2; JOYCAPS pjc; UINT wNumDevs, wDeviceID; BOOL bDev1Attached, bDev2Attached; if((wNumDevs = joyGetNumDevs()) == 0) { return MMSYSERR_NODRIVER; } joyGetDevCaps(JOYSTICKID1, &pjc, sizeof(JOYCAPS)); printf("%d %d %S\n%d %d %d %d %d %d\n%d %d %d\n%d %d %d %d %d %d\n%d %d %d %d\n%S %S\n", pjc.wMid, pjc.wPid, pjc.szPname, pjc.wXmin, pjc.wXmax, pjc.wYmin, pjc.wYmax, pjc.wZmin, pjc.wZmax, pjc.wNumButtons, pjc.wPeriodMin, pjc.wPeriodMax, pjc.wRmin, pjc.wRmax, pjc.wUmin, pjc.wUmax, pjc.wVmin, pjc.wVmax, pjc.wCaps, pjc.wMaxAxes, pjc.wNumAxes, pjc.wMaxButtons, pjc.szRegKey, pjc.szOEMVxD); printf("%d\n",wNumDevs); #if 1 for(;;) { bDev1Attached = joyGetPosEx(JOYSTICKID1,&joyinfo2) != JOYERR_UNPLUGGED; printf("X:%05d Y:%05d Z:%05d R:%05d H:%d %d\n", joyinfo2.dwXpos, // X joyinfo2.dwYpos, // Y joyinfo2.dwZpos, // Z(throttle) joyinfo2.dwRpos, // R(Rudder) joyinfo2.dwPOV, // POV(Hat) joyinfo2.dwButtons); Sleep(100); } #else for(;;) { bDev1Attached = joyGetPos(JOYSTICKID1,&joyinfo) != JOYERR_UNPLUGGED; printf("%d %d %d %d\n", joyinfo.wXpos, joyinfo.wYpos, joyinfo.wZpos, joyinfo.wButtons); Sleep(100); } #endif system("pause"); return 0; }
[링크 : http://msdn.microsoft.com/en-us/library/ms709377.aspx]
[링크 : http://msdn.microsoft.com/en-us/library/ms709352.aspx] joyGetPos
[링크 : http://msdn.microsoft.com/en-us/library/ms709359.aspx] JOYINFO
[링크 : http://msdn.microsoft.com/en-us/library/ms709354.aspx] joyGetPosEx
[링크 : http://msdn.microsoft.com/en-us/library/ms709358.aspx] JOYINFOEX
[링크 : http://msdn.microsoft.com/en-us/library/ms709350.aspx] joyGetDevCaps
[링크 : http://msdn.microsoft.com/en-us/library/ms709348.aspx] JOYCAPS
'Programming > C Win32 MFC' 카테고리의 다른 글
assert() (0) | 2013.12.18 |
---|---|
printf의 %s와 %S (0) | 2013.06.15 |
Windows IME (0) | 2013.02.14 |
== 와 = 의 실수를 피하기 위한 트릭 (2) | 2013.01.06 |
c 변수범위 헤더 (0) | 2012.07.02 |