如何将虚拟密钥代码转换为字符代码?

发布于 2025-01-28 16:46:35 字数 114 浏览 2 评论 0原文

onkeydown()处理程序中,我将获得219作为'['';但是,“ ['是91)的实际字符值。有什么方法可以映射这两个?

In the onkeydown() handler I am getting 219 as the keycode for '['; however, the actual character value of '[' is 91. Is there any way to map these two?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

新雨望断虹 2025-02-04 16:46:35

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

If you are using Windows, you should look into the ToUnicodeEx function.

橙味迷妹 2025-02-04 16:46:35

步骤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;执行

step 1: Open VC++ 6.0
Step 2: File --> New --> Projects --> Win32 Application
Give your project name
Step 3: File --> New --> Files --> C++ Source File
Give your file name
step 4: In your CPP file

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

step 5: Project --> settings --> Choose MFC as shared DLL
Step 6: Bulid --> Compile
step 7: Build --> Build
Step 8: Build --> Execute

流殇 2025-02-04 16:46:35

mapVirtualKey()也很有用。

MapVirtualKey() is also useful.

下雨或天晴 2025-02-04 16:46:35

您可以尝试使用mapVirtualKey(UINT UCODE,UINT UMAPTYPE)函数,该函数已内置在Windows.h库中。

一个例子是:

// Converts 0x1B (escape key) to the unshifted character value 27
MapVirtualKey( 0x1B, MAPVK_VK_TO_CHAR); 

或者

if (GetAsyncKeyState(VK_SHIFT) & (1 << 16)) {
    std::cout << MapVirtualKey(VK_SHIFT,MAPVK_VK_TO_CHAR);
}

您可以通过 mapVirtualKeya函数(hinuser.h)

You can try using the MapVirtualKey(UINT uCode,UINT uMapType) function that is built into the Windows.h library.

An example would be:

// Converts 0x1B (escape key) to the unshifted character value 27
MapVirtualKey( 0x1B, MAPVK_VK_TO_CHAR); 

OR

if (GetAsyncKeyState(VK_SHIFT) & (1 << 16)) {
    std::cout << MapVirtualKey(VK_SHIFT,MAPVK_VK_TO_CHAR);
}

You can read more at MapVirtualKeyA function (winuser.h)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文