2013-07-21 16 views
10

Qual è la differenza tra ottenere una pressione di un tasto con:GetKeyState() vs. GetAsyncKeyState() vs. getch()?

  • GetKeyState()
  • GetAsyncKeyState()
  • getch()?

Quando dovrei usare uno sull'altro?

+2

Perché il downvote? Non riesco a trovare alcun risultato su questo da StackOverflow, nemmeno se ignoro 'getch()' e cercare 'GetKeyState() contro GetAsyncKeyState()'. –

risposta

13

GetKeyState() e GetAsyncKeyState() sono API specifiche di Windows, mentre getch() funziona su altri compilatori C non specifici di Windows.

GetKeyState() ottiene lo stato della chiave restituito dalla coda messaggi del thread. Lo stato non riflette lo stato a livello di interrupt associato all'hardware.

GetAsyncKeyState() specifica se il tasto è stato premuto dall'ultima chiamata a GetAsyncKeyState() e se la chiave è attualmente attiva o disattiva. Se il bit più significativo è impostato, il tasto è premuto, e se è impostato il bit meno significativo, il tasto è stato premuto dopo la precedente chiamata a GetAsyncKeyState().

Quello che ho visto in pratica è che se si preme un tasto premuto e si assegna un comportamento quando si preme il tasto, se si utilizza GetKeyState(), il comportamento verrà chiamato più volte di quanto si avrebbe usato GetAsyncKeyState().

Nei giochi, preferisco utilizzare GetAsyncKeyState().

(È inoltre possibile controllare ulteriori dettagli sul blog MSDN).

Problemi correlati