Frage

Ich habe einen älteren MFC -Code, den ich geschrieben habe, dass ich ein bisschen "erfrische" bin. Ich habe den folgenden Code in einer Fensterklasse 'Onchar () Handler.

Ich mag es wirklich nicht, Konstanten wie 0x18 zu verwenden. Ich möchte den Code lesbarer machen. Ich weiß, ich kann meine eigenen deklarieren, aber gibt es keine Windows -Makros für diese Werte? Ich konnte nichts darüber im Internet finden.

// Check for clipboard commands
switch (nChar)
{
    case 0x18: // Ctrl+X - Cut
        OnEditCut();
        break;
    case 0x03: // Ctrl+C - Copy
        OnEditCopy();
        break;
    case 0x16: // Ctrl+V - Paste
        OnEditPaste();
        break;
}
War es hilfreich?

Lösung

Haben Sie dort oben einen Code, der einen Offset von NCHAR subtrahiert?

Diese Werte sind die Orte der Buchstaben im Alphabet, aber ich glaube nicht, dass Zeichencodes normalerweise so funktionieren. (Es ist lange her, dass ich irgendetwas davon verwendet habe, also habe ich vielleicht nur falsch erinnerte.)

Wie auch immer, das Codefragment, das Sie haben, ist dies effektiv (zumindest bei Architekturen, die die ASCII -Zeichenordnung verwenden, dh alphabetisch):

// Check for clipboard commands
switch (nChar)
{
    case ('X' - 'A' + 1): // Ctrl+X - Cut
        OnEditCut();
        break;
    case ('C' - 'A' + 1): // Ctrl+C - Copy
        OnEditCopy();
        break;
    case ('V' - 'A' + 1): // Ctrl+V - Paste
        OnEditPaste();
        break;
}

Wie in meinem anderen Kommentar erwähnt, würde ich erwarten, dass ein anderer Code -Überprüfungen für Strg geprüft wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top