The following code fragment shows how to respond to a character message:

    USHORT fsKeyFlags;
    UCHAR  uchChr1;

    case WM_CHAR:
    fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);

    if (fsKeyFlags & KC_CHAR) {

        /* Get the character code from mp2. */
        uchChr1 = (UCHAR) CHAR1FROMMP(mp2);
        .
        . /* Process the character.         */
        .

        return TRUE;
    }

If the KC_CHAR flag is not set, the mp2 parameter from CHAR1FROMMP still might contain useful information. If either the Alt key or the Ctrl key, or both, are down, the KC_CHAR bit is not set when the user presses another key. For example, if the user presses the a key when the Alt key is down, the low word of mp2 contains the ASCII value for "a" (0x0061), the KC_ALT flag is set, and the KC_CHAR flag is clear. If the translation does not generate any valid characters, the char field is set to 0.


[Back] [Next]