0

我写了一些旧的 MFC 代码,我正在“更新”一点。我在窗口类的 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;
}
4

1 回答 1

2

上面有没有从 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 被按住。

于 2010-12-30T08:00:47.280 回答