Notice
Link
- Today
- Total
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vc++
- Back 키 클릭 감지
- ffmpeg
- 시간대별 통계
- c언어
- springboot 재가동
- 파티션 빠른 삭제
- CentOS
- pid 찾아 kill
- view 획득
- 터치좌표 view
- group by
- Activity 전체화면
- MariaDB
- 가변영역 스크롤
- MFC
- CSS
- springboot
- 코드로 서버 재실행
- rn
- 말줌임 CSS
- 피쉬랜드
- 시간대 테이블생성
- SQL
- 스크롤적용
- kill -9
- sql exception
- mybatis exception
- reactnative
- MySQL
Archives
개발은 하는건가..
[WinApi] 조이스틱 사용 방법 본문
반응형
조이스틱 탐지
JOYINFO joyinfo;
UINT wNumDevs;
BOOL bAttached;
// 연결된 조이스틱 장치의 개수 확인
if ((wNumDevs = joyGetNumDevs()) == 0) {
TRACE("No device\n");
return;
}
// 조이스틱이 연결 시 순서대로 JOYSTICKID1, JOYSTICKID2 조이스틱 ID 를 가진다.
// JOYSTICKID1 의 조이스틱 현재 정보를 요청하여 에러가 없다면 연결된 것으로 판별.
bAttached = joyGetPos(JOYSTICKID1, &joyinfo) == JOYERR_NOERROR;
if (bAttached == FALSE) {
TRACE("Joystick not plugged\n");
return;
}
JOYCAPS joyCaps;
ZeroMemory(&joyCaps, sizeof(JOYCAPS));
// 연결된 상태라면 조이스틱 지원범위를 쿼리하여 정보를 획득한다.
if (joyGetDevCaps(JOYSTICKID1, &joyCaps, sizeof(JOYCAPS)) == JOYERR_NOERROR) {
TRACE("ManufactureID=%04X, ProductID=%04X\n", joyCaps.wMid, joyCaps.wPid);
TRACE(_T("ProductName=%s\n"), joyCaps.szPname);
TRACE(_T("Axes Count=%d\n"), joyCaps.wMaxAxes);
TRACE(_T("Xmin=%d, Xmax=%d\n"), joyCaps.wXmin, joyCaps.wXmax);
TRACE(_T("Ymin=%d, Ymax=%d\n"), joyCaps.wYmin, joyCaps.wYmax);
TRACE(_T("Zmin=%d, Zmax=%d\n"), joyCaps.wZmin, joyCaps.wZmax);
TRACE(_T("Button Count=%d\n"), joyCaps.wNumButtons);
}
조이스틱 조작 정보 획득
// JOYSTICKID1 ID 를 가지는 조이스틱이 연결된 상태라면 joyGetPos 를 통해 정보를 획득
JOYINFO joyinfo;
UINT x, y, z; // xyz 축 정보
UINT btn;
if (joyGetPos(JOYSTICKID1, &joyinfo) == JOYERR_NOERROR) {
x = joyinfo.wXpos;
y = joyinfo.wYpos;
z = joyinfo.wZpos;
btn = joyinfo.wButtons;
// btn 에서 JOY_BUTTON1 ~ JOY_BUTTON32 버튼을 마스크 비트 연산으로 체크하여 눌려진 상태를 확인한다.
if (btn & JOY_BUTTON1) {
// 버튼1 클릭 처리
}
}
그밖에 다음 Api 를 통해 필요한 동작을 구현할 수 있으며 api 사용법이 간단하기 때문에 아래 ms 사이트에서 api 를 참고하면 된다.
https://learn.microsoft.com/en-us/windows/win32/api/joystickapi/nf-joystickapi-joygetpos
joyGetDevCaps - 조이스틱 장치의 기능 쿼리 (지원 축, 버튼 수, 입력값 min~max 등 정보 획득 가능)
joySetCapture - 윈도우 메세지로 조이스틱 이동 및 버튼 상태를 받을 수 있도록 윈도우 핸들을 등록.
joyReleaseCapture - joySetCapture 한 윈도우 핸들 등록 해제
구현 방향은 별도의 스레드를 생성하여 joyGetPos() 를 주기적으로 호출하는 방식 또는 joySetCapture 를 이용하여 윈도우 메세지로 받는 방법 중 선택하여 구현하면 된다.
'C, C++, MFC' 카테고리의 다른 글
[VC++] 프로그램 중복 실행 방지 (0) | 2023.05.23 |
---|---|
[MFC] CRichEditCtrl 텍스트 컬러 지정 (0) | 2023.05.15 |
GPS 위도, 경도 위치 간 거리 계산 (0) | 2023.04.06 |
OpenSSL VC++ 용 빌드하기 (0) | 2023.03.27 |
[MFC] Custom slide control (0) | 2022.11.29 |
Comments