GetKeyState, GetAsyncKeyState 차이

2015. 4. 15. 07:59프로그래밍/ETC

728x90
728x90

개요

WM_KEYDOWN은 키가 눌러질 때 보내는 메세지.

키가 눌러지고 있다고 전달되는 것이 아니다. (계속 누르고 있는 경우 반복되어서 입력되는 상태)

이런한 처리를 하려면 키보드 메시지를 입력 받는 것이 아니라

직접 키의 상태를 조사하여 적용해야한다.


SHORT GetKeyState(int vVirKey);

SHORT GetAnsyncState(int vKey);


조사하고자하는 가상키를 인수로 전달한다.

일반 키일 경우 눌러져 있다면 MSB 비트는 1, 아니면 0.

Caps Lock 같은 토글키는 켜져있을 경우 LSB가 1, 아니면 0

함수의 리턴값과 0x8000과 &연산의 결과가 0인가 아닌가를 살피면

리턴값이 부호있는 값이므로 음수이면 키가 눌러진것으로 판단한다.


두 함수의 차이

키 상태를 조사하는 시점이 다르다.


GetKeyState 

- 메시지 입력 시점의 키 상태 조사.


GetAsnyncState 

- 메시지 처리 시점의 키 상태 조사

728x90
반응형