안녕하세요...여전히 극악초보입니다..
게임화면에서 간단히 테스트 할려고 GetAsynckeyState() api를 사용할려고 하는데요...
궁금한 것이 있어서 질문드립니다.
첫번째
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
요렇게 하는 방법(아마도 감자넷에서 보고) 을 인터넷에서 보고 따라해 봤습니다.
여기서 & 0x8000의 의미를 모르겠습니다...이게 뭘 의미하는건지..
그리구요..두번째로
vk_code에서 0x50이런식으로 16진수로 하면 키가 먹히는데요..
VK_W 이런식으로...MSDN에 있는 심볼로 하니 알수없는 연산자라는 에러가 납니다.
헤더파일에..Winuser.h도 추가해 보고 , kbdui.lib도 추가해 봤는데도 안되네요..
고수님들의 답변 부탁드립니다...
GetAsyncKeyState()하면서 질문입니다.
Moderator: 류광
-
- Posts: 253
- Joined: 2002-08-12 00:37
Re: GetAsyncKeyState()하면서 질문입니다.
해당 key가 바로 이전의 GetAsyncKeyState호출에서 눌러지지 않았지만 이번 호출에서 눌러졌다면psj5500 wrote:여기서 & 0x8000의 의미를 모르겠습니다...이게 뭘 의미하는건지..
0x8000 플래그가 켜져서 리턴됩니다. 그리고 그 키를 계속 누르고있는 동안 켜지지 않습니다.
보통 한번의 키누름에서 하나의 동작을 할때 유용하죠.
(말그대로 비동기(async)적이기 때문에 키를 아무리 순식간에 눌러도 프로그램의 루프가 빠른만큼
계속 눌러진 걸로 감지되기 때문에...)
GetAsyncKeyState( 'W' ); 로 직접 넣으시면 됩니다(대문자).psj5500 wrote:VK_W 이런식으로...MSDN에 있는 심볼로 하니 알수없는 연산자라는 에러가 납니다.
이덕희
-
- Posts: 253
- Joined: 2002-08-12 00:37
죄송합니다. 오류...
제가 여지껏 0x8000 플래그라고 말한 것은 전부 0x0001 입니다.
잘못된 정보를 답변이라고 달아서 죄송합니다
0x8000 은 비회원님 말씀처럼 눌러지고 있는동안 계속 켜저 있습니다.
잘못된 정보를 답변이라고 달아서 죄송합니다
0x8000 은 비회원님 말씀처럼 눌러지고 있는동안 계속 켜저 있습니다.
이덕희
새로운 사실을 알았습니다.
저도 저위에 0x8000 으로만 그냥 검사하면서 과연 리턴값에 어떤의미가 있는건지
한번도 생각안해봤었는데
리턴값에 많은 정보가 들어와 있었군요.
그 리턴값에 어떤 정보가 들어있는지 어떻게 알수있죠?
MSDN에는 안나오는것 같던데요.
이런 정보를 어디서 알아내셨나요? 좀 알려주십시요. 부탁.
한번도 생각안해봤었는데
리턴값에 많은 정보가 들어와 있었군요.
그 리턴값에 어떤 정보가 들어있는지 어떻게 알수있죠?
MSDN에는 안나오는것 같던데요.
이런 정보를 어디서 알아내셨나요? 좀 알려주십시요. 부탁.
-
- Posts: 253
- Joined: 2002-08-12 00:37
MSDN에
MSDN에 나와있구요, 0x8000, 0x0001 이런식으로 나온 것이 아니라비회원 wrote:MSDN에는 안나오는것 같던데요.
이런 정보를 어디서 알아내셨나요? 좀 알려주십시요. 부탁.
최상위비트, 최하위비트 라고 적어놔서 못보신듯 하네요
MSDN wrote:If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.
이덕희