DX Mouse setting 이후, 버튼 메시지 판별
프로그래밍2006. 10. 5. 01:16
마우스의 장치 생성이 모두 완료된 다음,
g_lpDIMouse->Acquire(); 로 엑세스 권한을 취득하면,
DIMOUSESTATE 구조체를 이용하여 변수를 생성한다.
DIMOUSESTATE mousestate;
이 구조체는 최대 4개의 버튼을 가지는 마우스의 상태, 마우스와 함께 액세스 되는 그 외의 장치 상태를 정의한다. 이 구조체는 IDirectInputDevice8::GetDeviceState 메서드로 사용한다.
typedef struct DIMOUSESTATE {
LONG lx;
LONG ly;
LONG lz;
BYTE rgbButtons[4];
} DIMOUSESTATE, *LPDIMOUSESTATE;
LONG lx;
LONG ly;
LONG lz;
BYTE rgbButtons[4];
} DIMOUSESTATE, *LPDIMOUSESTATE;
순서대로, x축, y축을 나타내며 lz는 휠을 나타내나 휠이 없을경우 0를 가진다.
rgbButton은 버튼의 배열이며, 바이트의 상위비트는, 해당 버튼이 다운상태에 있을때 설정됨.
버튼 다운 메시지 확인은 다음과 같다.
mousestate.rgbButton[0] & 0x80 //좌측버튼
mousestate.rgbButton[1] & 0x80 //우측버튼
mousestate.rgbButton[2] & 0x80 //가운데
mousestate.rgbButton[1] & 0x80 //우측버튼
mousestate.rgbButton[2] & 0x80 //가운데
해당 연산의 결과가 0이아닌 값, 즉 참(true)값이 나오면 해당 버튼의 다운 메시지 발생.
'프로그래밍' 카테고리의 다른 글
ExtremeProgramming 의 pair-programming에 대한 고찰 (0) | 2006.12.21 |
---|---|
OS - Process Data (0) | 2006.11.06 |
2차원 배열 동적 할당과, 해제 (0) | 2006.10.01 |
MDI에서 최초 Blank Window Open을 막는 방법. (0) | 2006.09.17 |
in String 2Bytes 한글 판단법 - 메모 (0) | 2006.09.05 |