如何切换两个键盘键动作?

时间:2016-01-13 15:49:45

标签: mfc

我有一个基于对话框的MFC项目。我有ON_WM_KEYDOWN()功能正常工作,当我按下向下键时,它会做它应该做的事情。

现在我想将向下键更改为' w'我有非常基本的MFC知识,我不知道应该添加什么功能以及要更改的程序的哪个部分。

。键,以及' a'等的左键。

我的ON_WM_KEYDOWN()函数如下所示:

if(pMsg->message == WM_KEYDOWN)
{
    switch(pMsg->wParam)
    {
    // Disable OK & Cancel function
    case VK_ESCAPE:
    case VK_RETURN:
        return TRUE;
    }
}

1 个答案:

答案 0 :(得分:0)

变量pMsg->wParam包含已按下的键。您可以查找密钥代码here。因此,您需要在ON_WM_KEYDOWN处理程序中使用与以下内容类似的代码:

if(pMsg->message == WM_KEYDOWN)
{
    switch(pMsg->wParam)
    {
    case 0x57:
        // W key. Put code for "up" here...
        break;
    case 0x41:
        // A key. Put code for "left" here...
        break;
    case 0x53:
        // S key. Put code for "down" here...
        break;
    case 0x44:
        // D key. Put code for "right" here...
        break;
    // Disable OK & Cancel function
    case VK_ESCAPE:
    case VK_RETURN:
        return TRUE;
    }
}

例如,如果您希望 A 键执行 cursor-left 键的相同操作,则可以通过发送{{1}来执行此操作}通过VK_LEFT消息与PostMessage函数:

WM_KEYDOWN

然而,我没有尝试这个,我不知道这样做是不是一个好的风格。