c++ - 如何在 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 (谷歌说它可以关闭输入法)对我不起作用。
解决方案
推荐阅读
- javascript - 为什么 Chrome 在执行 Javascript 之前看起来像是在等待 DOM?
- php - 如果我们在 if 条件中设置它们,PHP 会话变量将不起作用
- dart - RangeError:无效值:不在范围 0..1114111 内,包括:-1 尝试使用升级命令时
- flutter - 在 Flutter 中将本地化更改为阿拉伯语时,小部件方向不会更改为 RTL
- php - WordPress 相关帖子缩略图有效,但永久链接错误
- python - 用另一个列表扩展列表的问题
- discord - 如何在 discord.py 重写时格式化时间?
- java - Streams 中的 map() 如何工作以及当参数是 Collection 时如何使用它
- javascript - 在leaflet(R)中添加叠加图像时如何添加组名?
- django - Django 表单获取图像数据但不获取文本