Вопрос

У меня есть какой -то более старый код MFC, который я написал, что я немного «освежаю». У меня есть следующий код в классе Window 'onchar ().

Мне действительно не нравится использовать константы, такие как 0x18. Я хотел бы сделать код более читабельным. Я знаю, что могу объявить свои собственные, но нет ли макросов Windows для этих значений? Я ничего не мог найти в этом в Интернете.

// 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;
}
Это было полезно?

Решение

У вас есть какой -то код, который вычитает смещение из NCHAR?

Эти значения - это места букв в алфавите, но я не думаю, что коды символов обычно работают так. (Прошло много времени с тех пор, как я использовал что-то из этого, так что, возможно, я просто не запоминаю.)

В любом случае, фрагмент кода, который у вас есть, является эффективным (по крайней мере, на архитектурах, которые используют упорядочение символов ASCII, то есть алфавит):

// 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;
}

Как упоминалось в другом моем комментарии, я ожидаю, что будет какая -то другая проверка кода на CTRL, которая будет удерживаться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top