Werte für VK_



  • Kann mir einer sagen,wo ich die Definitionen von den Keykonstanten herkriege?

    Also VK_0,VK_1,VK_A,VK_B,VK_C etc

    Ich brauche die int Werte.



  • Für Ziffern und Buchstaben gibt es keine Virtuellen Keycodes, die haben einfach den entsprechenden ASCII-Wert.
    Der Rest ist in winuser.h definiert.



  • Danke,das ist genau die Antwort,die ich gesucht hab. 🙂



  • Jetzt hab ich aber das nächste Problem.

    Ich habe nach diesem Schema http://www.c-plusplus.net/forum/viewtopic-var-t-is-39144.html mehrere Hotkeys festgelegt.

    Jetzt hab ich das Problem,dass ich nicht unterscheiden kann,welcher Hotkey gedrückt wurde.

    WParam bringt falsche Werte.



  • Hat keiner eine Idee?

    Ich hätte da einen Ansatz:

    void __fastcall TForm4::WMHotKey(TMessage &Msg)
    {
    	MSG Message;
    	GetMessage(&Message,0,0,0);
    	DispatchMessage(&Message);
    	TForm::Dispatch(&Msg);
    
    	Edit1->Text = IntToStr(Message.wParam);
    }
    

    Auf das Numpad reagiert dies aber nicht mehr und manchmal kriege ich den Wert 65535.

    Irgendwelche Ideen,dass ich die Gedrückten Hotkeys unterscheiden kann,also für jeden Hotkey ein anderes Event machen kann?



  • Zeig doch mal, wie du RegisterHotKey aufrufst.



  • for (int i = 0 ; i < 10 ; i++)
    {
    	  S = "Hotkey" + i;
    	  HotKeyIdentifier_uint[i] = GlobalAddAtom(S.c_str());
    	  HotKeyModifier_uint[i] = 0;
    	  RegisterHotKey(Handle, HotKeyIdentifier_uint[i], HotKeyModifier_uint[i], StrToInt(StringList->operator [](2+i)));
    }
    

    Die ersten 6 haben einen korrekten Wert,die letzten 4 sind = 0.

    Die Stringlist wird aus einer Datei ausgelesen.

    Zeile 1
    Zeile 2
    69
    87
    81
    70
    83
    65
    84
    90
    74
    75
    

    EDIT:

    Ich bin wieder zurück auf

    void __fastcall TForm4::WMHotKey(TMessage &Msg)
    {
    	TForm::Dispatch(&Msg);
    	Edit1->Text = IntToStr(Msg.WParam);
    }
    

    Ich hab jetzt erst gerafft,das Msg.wParam den Wert im Register hat und nicht den normalen aus dem ASCII.

    Dennoch sind die letzten 4 Hotkeys = 0.



  • RegisterHotKey gibt übrigens nicht umsonst einen Wert zurück.

    Warum gibst du beim dritten Parameter nochmal HotKeyModifier_uint[i] an?



  • Das Problem hat sich erledigt.

    Der Fehler lag in dieser Zeile

    S = "Hotkey" + i;
    

    Das muss heißen

    S = "Hotkey" + IntToStr(i);
    

    und nun funktioniert alles.

    Ich hab das im dritten Parameter drin,weil ich diese Zeile einfach kopiert hab.


Anmelden zum Antworten