Welcher Klassen/Strukturaufbau
-
Warum nicht ein Array?
-
volkard schrieb:
Warum nicht ein Array?
Gute Frage. Letzter Versuch:
namespace Key { enum Key { Q,W,E,R,T,Z,U,..., KEY_COUNT }; } bool key_stats[Key::KEY_COUNT] = {0}; // = {false} ? void KeyboardEvent(bool status, Key::Key key) { // Wert von key prüfen? key_stats[key] = status; }Jetzt alle zufrieden?

-
cooky451 schrieb:
Jetzt alle zufrieden?

Nö, warum ein enum?
-
yarra schrieb:
cooky451 schrieb:
Jetzt alle zufrieden?

Nö, warum ein enum?
Was würdest du denn nehmen wollen? char? Und was machst du dann, wenn Ctrl gedrückt wird?
(Oder Shift, Enter, etc.)
-
Danke für die Antwort, sieht schon vielversprechend aus, werde mich mal mit der Map beschäftigen.

Also Zahl (enum) wäre nicht so gut, da ich diese Key-Codes bekomme: http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx
-
nt2005 schrieb:
Also Zahl (enum) wäre nicht so gut, da ich diese Key-Codes bekomme: http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx
Also wäre die Arraygröße 256? Geht doch noch.
-
Aber wie kann ich denn das char in diesen ArrayIndex (schätze mal int) umformen? Oder geht das so einfach?
-
Die Keycodes liegen doch in int vor. Wenn Du ein Array mit 256 Einträgen hast, nimmst Du einfach den Index des Keycodes.
array[keycode]Da brauchst Du nichts umformen.

-
Ich persönlich finde ein std::map<char, bool> map besser als ein bool array[256] und dann char als Index zu missbrauchen. Aber jeder hat einen anderen Geschmack.
-
FreakY<3Cpp schrieb:
besser als ein bool array[256] und dann char als Index zu missbrauchen
Dem Link zufolge, der oben gepostet wurde, scheints eher Richtung unsigned char zu gehen, zumal Werte von 0x01-0xFE angegeben werden. Das ist dann schon wieder ne andere Situation.
-
Das mag gut sein, deswegen meinte ich "Ich persönlich finde...", da ich es als schlechten Stil sehe. Ich würde es alleine aus dem Grund nicht nehmen, weil ich es etwas hässlig finde und ich keine 256 Tasten auf der Tastatur habe. Aber wie gesagt, jeder wie er will, ist nur meine Meinung.
-
Hey, naja ich verwende ja einen Hook und da geht es ja über:
__declspec(dllexport) LRESULT CALLBACK Test::KeyboardProc ( int nCode, WPARAM wParam, LPARAM lParam) { if(buffer[0]=='C' && buffer[2]=='n' && buffer[5]=='a' && nCode == HC_ACTION) { KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam); // Find the letter of the typed key char lettre=(char)hookstruct.vkCode; ... } ... }vkCode ist ja ein DWord...
Edit: Okay, ich kann es ja auch zu einen Integer casten. xD