Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ctrl+的Windows常量;十、 Ctrl+;C、 和Ctrl+;v_Windows_Mfc_Character Codes - Fatal编程技术网

Ctrl+的Windows常量;十、 Ctrl+;C、 和Ctrl+;v

Ctrl+的Windows常量;十、 Ctrl+;C、 和Ctrl+;v,windows,mfc,character-codes,Windows,Mfc,Character Codes,我有一些我写的旧MFC代码,我正在“更新”一点。在窗口类的OnChar()处理程序中有以下代码 我真的不喜欢使用0x18之类的常量。我想让代码更具可读性。我知道我可以声明我自己的,但是这些值没有Windows宏吗?我在网上找不到关于这个的任何信息 // Check for clipboard commands switch (nChar) { case 0x18: // Ctrl+X - Cut OnEditCut(); break; case 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;
}

上面有没有从nChar中减去偏移量的代码

这些值是字母在字母表中的位置,但我认为字符代码通常不是这样工作的。(我已经很久没有用过这些了,所以我可能只是记错了。)

无论如何,您拥有的代码片段实际上是这样的(至少在使用ASCII字符排序的体系结构上,即字母):


正如我在其他评论中提到的,我希望会有其他一些代码检查是否按住Ctrl键。

是否确实使用了代码,并且热键没有被其他东西(如加速器表)处理?在我看来,这是错误的,因为我希望字符代码是“X”、“C”和“V”,并检查separate flags参数以查看是否按住ctrl键。也许我已经忘记了OnChar是如何工作的。毫无疑问,上面的代码是按照所描述的那样工作的。
'X'-'@
better@6502很公平。我发现我这样做的方式更清楚,因为我不太可能记得在ASCII表中@在A之前,但这是一个品味问题。@Leo:define CTRL(x)((x)-“@”)怎么样?这样代码就变成了
case-CTRL('X'):…
@Leo:是的,我理解为什么你觉得这很奇怪,我也一样。但是我的代码肯定没有改变nChar,我确实在Web上找到了一些使用我使用的值的引用。您提供的代码似乎不那么武断,但可能不会再进行自我记录。@6502:是的,这会使代码更具有自我记录能力。当然,宏观经济看起来仍然很奇怪。就这点而言,我可以定义CTRL#ux0x18。我不确定是否值得花更多的时间在上面。
// 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;
}