1) GetAsyncKeyState() 함수와 2) GetKeyState()는 사용방법이 다른데
1)은 비동기(Asynchronism)으로 처리 한다.
: 호출된 시점에서 키 상태를 조사하여, 메시지 큐를 거치지 않고 바로 리턴을
해주므로 키 입력을 바로 처리해 줄 수 가 있다.
2)는 호출된 시점에서 메시지 큐를 거치며, 메시지 발생 후의 상태를 리턴하게 되므로, 키보드 메시지
처리 루틴내에서 사용해야 한다.
바로바로 키 입력을 처리해야하는 경우는 GetAsyncKeyState()를 사용하는 것이 바람직하다.
1) GetAsyncKeyState() 사용법
GetAsyncKeyState(해당키) 는 키가 눌려진 시점에 0x8000 값을 리턴해주고
키가 눌려 있었다면 0x0001 값을 리턴한다.
0x8000 은 현재 키가 눌려진 상태를 말하고
0x0001 은 키가 눌려있었음을 말해준다.
따라서 GetAsyncKeyState() & 0x8000 을 하면 키가 방금 눌렸을 경우만 1이 된다.
GetAsyncKeyState() & 0x0001 을 하면 키가 눌려있었는지를 판단할 수 있다.
간단 예제
while(1) {
while(GetAsyncKeyState(VK_UP) & 0x0001) {
au.vol_up();
}
while(GetAsyncKeyState(VK_DOWN) & 0x0001) {
au.vol_down();
}
if(GetAsyncKeyState(VK_LEFT) & 0x0001) break;
}
윗키, 아래키를 눌렀을때는 볼륨을 올리고 내리고
왼쪽키는 while문을 중단 시키는 역할을 한다.
2) GetKeyState() 사용법
: GetKeyState()는 해당키가 눌린 상태일때는 음수값을 리턴, 아닐 경우는
해당키가 눌리지 않았음을 나타낸다.
if(GetKeyState(VK_CONTROL) < 0) // 눌려있는 상태이면... 이란 뜻으로 쓰인다
출처 : http://blog.naver.com/mklife/150020920925
'C/C++언어 > 윈도우 API' 카테고리의 다른 글
Win32 dll 만들기 (0) | 2007.11.11 |
---|---|
API 기본 윈도우즈 생성 소스 (0) | 2007.09.06 |
API ? 용.. 웹브라우져 띄우는 소스... 음.. (코드구루에서 퍼온겁니다) (0) | 2007.02.16 |
API형식의 인터넷 익스플로어 (IWebBrowser2 활용) 소스, C언어 전용.. (0) | 2007.02.15 |