Accelerators: virtual key code / character code



  • Hi!

    Ich habe eine Frage zu Accelerators.

    Wenn man beim Füllen der ACCEL-Struktur das Flag FVIRTKEY angibt, wird die key-Membervariable als virtual key code interpretiert, ansonsten als character code.

    FVIRTKEY
    The key member specifies a virtual-key code. If this flag is not specified, key is assumed to specify a character code.

    Wenn ich jetzt 'A' bzw. 65 als key angebe und FVIRTKEY setze, funktioniert alles bestens.

    Meine Frage: Wie sieht das jetzt als character code aus? Wie ist der character code der Taste "A"?

    Matthias



  • Matthias- schrieb:

    Meine Frage: Wie sieht das jetzt als character code aus? Wie ist der character code der Taste "A"?

    UINT uCharacterCode = LOWORD(MapVirtualKey('A', 2));
    


  • Hoi,

    mit der Funktion hatte ich auch schon rumgespielt, aber nicht das richtige herausbekommen. Wenn ich es so ausprobiere, wie du es vorschlägst ist uCharacterCode 65, also der ASCII-Wert von A. Da kann ich ja direkt 'A' schreiben. 😉

    Aber ich habe es mittlerweile herausgefunden. Ich muss einfach die ASCII-Werte für die Kleinbuchstaben benutzen. Also 97 (a) bis 122 (z).

    cu,
    Matthias



  • Matthias- schrieb:

    mit der Funktion hatte ich auch schon rumgespielt, aber nicht das richtige herausbekommen. Wenn ich es so ausprobiere, wie du es vorschlägst ist uCharacterCode 65, also der ASCII-Wert von A. Da kann ich ja direkt 'A' schreiben. 😉

    Ja, und? Das ist doch völlig richtig so. Ein kleiner Blick in winuser.h offenbart:

    #define VK_HELP           0x2F
    
    /*
     * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
     * 0x40 : unassigned
     * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
     */
    
    #define VK_LWIN           0x5B
    

    Aber ich habe es mittlerweile herausgefunden. Ich muss einfach die ASCII-Werte für die Kleinbuchstaben benutzen. Also 97 (a) bis 122 (z).

    Na gut, wenn Du das mußt ... 😉



  • Ja, stimmt schon, eigentlich hast du recht. 🙂

    Das Problem war nur, dass wenn ich 'A' (65) benutze die Shift-Taste gedrückt sein muss um den Accelerator auszulösen. Das habe ich aber erst später bemerkt, sonst wäre ich natürlich direkt auf die Sache mit den Kleinbuchstaben gekommen.

    Herzlichen Dank. 😋

    cu,
    Matthias


Anmelden zum Antworten