首页 > 解决方案 > 如何在 C++ 控制台中禁用输入法?

问题描述

我正在制作基于文本的控制台游戏。

中文输入法很烦人,因为它会阻止正常的按键输入。

我试图将 NULL 发送到 ImmAssociateContext 但它不起作用。

#include<Windows.h>
#include <imm.h>
#include <atlstr.h>
#include<handleapi.h>
#include<iostream>
#pragma comment ( lib,"imm32.lib" )  
using namespace std;
int main(int argc, char* argv[])
{
    SetConsoleTitle(TEXT("test"));
    char ch;

    ImmAssociateContext(FindWindow(NULL, TEXT("test")), NULL);
    cin >> ch;
    cout << ch;
    return 0;
}

在此处输入图像描述

编辑:我不需要在这个游戏中输入中文。

关于中文输入:当您在控制台输入字母时,中文输入法会将输入作为拼音接收,并将其转换为汉字。

(在截图中,aabbcc 下划线是拼音)

日语输入法也发生了同样的事情。

这不是我需要的。我想要的是,当我按 A 时,控制台会收到 A。

关于代码:

我在我的项目中使用 PDCurses 来绘制基于文本的 gui 并获取关键输入。

关闭输入法后一切正常。

上面的代码显示 ImmAssociateContext (谷歌说它可以关闭输入法)对我不起作用。

标签: c++console-application

解决方案


推荐阅读