Mit GetKeyState()
Ich würde gerne ein boolean-event Umschalten, wenn eine Taste gedrückt wird. Speziell das " s " - Taste. Ich wurde darauf hingewiesen die Funktion GetKeyState(), die angeblich arbeitet unter der Win32-API. Ich verstehe den ASCII-code für den Buchstaben 's' ist 115, und so mein code ist wie folgt:
if (GetKeyState(115) == 1)
{
<EVENT>
}
Jedoch, funktioniert dies nicht. Warum? Hier ist der MSDN-Referenz: http://msdn.microsoft.com/en-us/library/ms646301%28v=vs.85%29.aspx ...", Wenn das low-order-bit 1 ist, wird der Schlüssel aktiviert ist"
InformationsquelleAutor CaptainProg | 2011-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus, was ich verstehe, Sie tun müssen:
Wird das höchste bit gibt an, ob Taste gedrückt ist. Die niedrigsten sagt, wenn die Taste aktiviert ist (wie, wenn die Feststelltaste aktiviert ist).
Vielleicht möchten Sie GetAsyncKeyState.
GetKeyState
aufgerufen werden, in Reaktion auf Tastaturereignisse.Die virtual key-codes für die Buchstaben-Tasten entsprechen den ASCII-codes der Großbuchstaben. Und Sie können sogar eine
char
statt derint
das macht den code lesbarer zu gestalten. So versuchenGetKeyState('S')
InformationsquelleAutor Piotr Praszmo
Seit kurzem unterzeichnet, high-order bit ist-gleich-Zeichen bit.
Daher zu testen, ob eine bestimmte Taste gedrückt wird, einfach prüfen, ob der zurückgegebene Wert von
GetKeyState()
negativ:Neben, 115 ist der ASCII-code für 's'. Ich glaube, Sie verwenden sollten, Hauptstadt Fall 83 zum testen der 'S' - Taste.
InformationsquelleAutor Simon Rozman
Verwende ich eine Globale variable bool
altgr
Beispiel:
InformationsquelleAutor Adolfo Cárdenas
Manchmal Sie verwenden möchten Kombination von Tasten.
Die Situationen zu vermeiden, wenn eine Kombination von Tasten (zB: VK_SHIFT && VK_LEFT) zwei Bedingungen erfüllt:
verwenden Sie einfach
Sleep(...);
undGetAsyncKeyState(VK_...)
GetKeyState() vs. GetAsyncKeyState() und getch()?
InformationsquelleAutor T.I.Adrian
Bisschen spät dafür, aber die high-order bit 0x80000000 nicht 0x8000, dieses zu ändern und es wird funktionieren.
Dem anderen etwas - das ist nützlich für nichts - es wirkt, als ob Sie die Feststelltaste gedrückt, wenn Sie LSHIFT gedrückt.
SHORT
(16 bit), nicht 32-bit-Wert (in anderen Worten,0x80000000
ist nicht gültig).InformationsquelleAutor Laurie