Jaka jest różnica między uzyskanie naciśnięcie klawisza z:GetKeyState() vs. GetAsyncKeyState() vs. getch()?
GetKeyState()
GetAsyncKeyState()
getch()
?
Kiedy należy używać jednego nad drugim?
Jaka jest różnica między uzyskanie naciśnięcie klawisza z:GetKeyState() vs. GetAsyncKeyState() vs. getch()?
GetKeyState()
GetAsyncKeyState()
getch()
?Kiedy należy używać jednego nad drugim?
GetKeyState() i GetAsyncKeyState() są specyficznymi dla systemu Windows interfejsami API, podczas gdy getch() działa na innych kompilatorach C działających bez systemu Windows.
GetKeyState() pobiera kluczowy status zwrócony z kolejki komunikatów wątku. Status nie odzwierciedla stanu przerwania związanego ze sprzętem.
Funkcja GetAsyncKeyState() określa, czy klawisz został naciśnięty od ostatniego wywołania funkcji GetAsyncKeyState() oraz czy klawisz jest aktualnie w górę lub w dół. Jeśli najważniejszy bit jest ustawiony, klawisz jest wyłączony, a jeśli ustawiony jest bit najmniej znaczący, klawisz został naciśnięty po poprzednim wywołaniu funkcji GetAsyncKeyState().
To, co widziałem w praktyce, polega na tym, że jeśli przytrzymasz klawisz wciśnięty i przypisujesz zachowanie po naciśnięciu klawisza, jeśli użyjesz GetKeyState(), zachowanie będzie wywoływane więcej razy niż gdybyś użył GetAsyncKeyState().
W grach wolę używać GetAsyncKeyState().
(Można również sprawdzić więcej szczegółów na blogu MSDN).
Dlaczego spadamy? Nie mogę znaleźć żadnych wyników na ten temat ze stackoverflow, nawet jeśli ignoruję 'getch()' i szukam 'GetKeyState() vs. GetAsyncKeyState()'. –