GetAsyncKeyState() 와 GetKeyState() 함수
* GetAsyncKeyState() (Get Asyncnism Key State)
- 비동기 키 처리 함수
- 호출 시점에 키 상태를 조사하여, 메시지 큐를 거치지 않고 바로 리턴을 해준다(즉각 반응)
- 게임에 사용하기 좋다
- GetAsyncKeyState() 함수는 키가 눌려졌을 때 0x8000 값 리턴
- 함수가 호출되었을 때 키가 눌려 있었다고 0x0001 값 리턴
- 다시말해 0x8000는 키가 눌려진 상태, 0x0001는 지난 호출과 이번 호출 사이 키가 눌린적이 있다는 의미
- 사용 예시)
if ( GetAsyncKeyState(VK_RETURN) & 0x8000 ) // enter 키가 눌렀다면
{
// 처리
}
- 0x8000 AND연산으로 키 눌림을 체크 이유
1000 0000 0000 0000 (키눌림 0x8000) 0000 0000 0000 0001 (눌러진 적이 있음 0x0001)
& 1000 0000 0000 0000 (AND 연산 0x8000) & 1000 0000 0000 0000 (AND 연산 0x8000)
------------------------- --------------------------
1000 0000 0000 0000 (키눌림 0x8000) 0000 0000 0000 0000 (키 안 눌림)
위와 같은 결과가 되어, 정확한 시점에서 키가 눌러진 상태를 체크할 수가 있다
즉, 정확한 시점에서 키눌림 상태를 체크하기 위해서 0x8000으로 AND 연산을 해 주는 것
* GetKeyState()
- 호출 시점에 메시지 큐를 거쳐 리턴하므로 GetAsyncKeyState 보다 늦다
두 함수를 이용해 키 매니저를 만들면 편리하다
- 비동기 키 처리 함수
- 호출 시점에 키 상태를 조사하여, 메시지 큐를 거치지 않고 바로 리턴을 해준다(즉각 반응)
- 게임에 사용하기 좋다
- GetAsyncKeyState() 함수는 키가 눌려졌을 때 0x8000 값 리턴
- 함수가 호출되었을 때 키가 눌려 있었다고 0x0001 값 리턴
- 다시말해 0x8000는 키가 눌려진 상태, 0x0001는 지난 호출과 이번 호출 사이 키가 눌린적이 있다는 의미
- 사용 예시)
if ( GetAsyncKeyState(VK_RETURN) & 0x8000 ) // enter 키가 눌렀다면
{
// 처리
}
- 0x8000 AND연산으로 키 눌림을 체크 이유
1000 0000 0000 0000 (키눌림 0x8000) 0000 0000 0000 0001 (눌러진 적이 있음 0x0001)
& 1000 0000 0000 0000 (AND 연산 0x8000) & 1000 0000 0000 0000 (AND 연산 0x8000)
------------------------- --------------------------
1000 0000 0000 0000 (키눌림 0x8000) 0000 0000 0000 0000 (키 안 눌림)
위와 같은 결과가 되어, 정확한 시점에서 키가 눌러진 상태를 체크할 수가 있다
즉, 정확한 시점에서 키눌림 상태를 체크하기 위해서 0x8000으로 AND 연산을 해 주는 것
* GetKeyState()
- 호출 시점에 메시지 큐를 거쳐 리턴하므로 GetAsyncKeyState 보다 늦다
두 함수를 이용해 키 매니저를 만들면 편리하다
댓글
댓글 쓰기