如何将虚拟键码转换为字符码?

时间:2010-02-22 06:09:56

标签: mfc visual-c++

onkeydown()处理程序中,我得到219作为'['}的关键代码但是,'['的实际字符值为91。有没有办法映射这两个?

3 个答案:

答案 0 :(得分:3)

如果您使用的是Windows,则应查看ToUnicodeEx功能。

答案 1 :(得分:1)

步骤1:打开VC ++ 6.0
第2步:文件 - >新 - >项目 - > Win32应用程序
        提供项目名称
第3步:文件 - >新 - >文件 - > C ++源文件
        提供您的文件名
第4步:在您的CPP文件中

/* Mfc program to handle virtual key codes. */
#include<afxwin.h>
class myframe : public CFrameWnd
{
public: 
    myframe()
    {
        Create(0,"Menu Program");
    }
    void OnKeyDown(UINT n)
    {
        switch(n)
        {
        case VK_LEFT:
            MessageBox("Left Arrow","Hellow");
            break;
        case VK_RIGHT:
            MessageBox("Right Arrow","Hellow");
            break;
        case VK_UP:
            MessageBox("Up Arrow","Hellow");
            break;
        case VK_DOWN:
            MessageBox("Down Arrow","Hellow");
            break;
        case VK_NUMPAD0:
            MessageBox("Number ZERO","Hellow");
            break;
        case VK_NUMPAD9:
            MessageBox("Number NINE","Hellow");
            break;
        case VK_SPACE:
            MessageBox("Space Bar","Hellow");
            break;
        case VK_BACK:
            MessageBox("BACK KEY","Hellow");
            break;
        case VK_SHIFT:
            MessageBox("SHIFT KEY","Hellow");
            break;
        }
    }       
    DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(myframe,CFrameWnd)
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
class myapp : public CWinApp
{
public:
    int InitInstance()
    {
        m_pMainWnd=new myframe();
        m_pMainWnd->ShowWindow(3);      
        return 1;
    }
};
myapp app;

第5步:项目 - &gt;设置 - &gt;选择MFC作为共享DLL
步骤6:Bulid - &gt;编译
第7步:构建 - &gt;构建
第8步:构建 - &gt;执行

答案 2 :(得分:0)

MapVirtualKey()也很有用。