short형을 리턴하는 함수라는데
리턴값은
0 : 이전에 누른 적이 없고 호출시점에 안 눌린 상태
0x8000 : 이전에 누른 적이 없고 호출시점에 눌린 상태
0x8001 : 이전에 누른 적이 있고 호출시점에 눌린 상태
1 : 이전에 누른 적이 있고 호출시점에 안 눌린 상태
이라더라
근데 이거 보통 w키를 받는다고 치면
GetAsyncKeyState('W') & 0x8000 이런 식으로 비트연산자로 쓰더라고
1. & 써야해? == 쓰면 안 되는 이유라도 잇음?
2. 이전에 누른 적이 없다는게 언제 말하는거임? while 무한반복 내에서 (GetAsyncKeyState('W') & 0x8000) 이거 if문으로 실행해봤는데
w키를 그냥 계속 누르고 있어도 true 나와서 계속 실행되던데
3. 2번 같은 경우처럼 꾹 누르고 있는 경우 0x8001이 아닌 0x8000인 이유도 좀
최초 호출 시 08000 그 후 08001 리턴 / 최초 호출 비트 연산 결과(08000) 그 후 비트 연산 결과(08001)
이전에 누른 적이 있고 호출시점에 안 눌린 상태(1) & 0x8000 = 0
무슨 말인지 알겠?
모바일이라 대충 적었는데
최초호출이라는게 프로그램 시작해서 처음으로 호출될 때 말하는거임? 만약 while문으로 돌린다치면 그냥 내내 0x8001이 리턴된다는거?
08000 리턴됬다가 해당 while문 블럭 끝나고 되돌아오면 08001 리턴함
그 while문에선 반복 내내 0x8000이 리턴되고 그 밑부터는 0x8001이 리턴된다는거? 그럼 0x8001 리턴되는거 이용해서 이 함수로 두번 연타하면 달리기 같은거 구현할 수도 잇음? 아니면 다른 함수 추가필요?
GetAsyncKeyState로도 가능함
Time.h의 clock() + Flag 이용해서 하던가 뭐.. 방법은 많은듯
첫번쨰 질문 (그 while문에선 반복 내내 0x8000이 리턴되고 그 밑부터는 0x8001이 리턴된다는거?) 이거는 참임?