控制台的中文输入问题
这是控制台本来就存在的问题。
以下代码是纯粹的控制台程序,没有使用 EasyX,你可以测试一下,同样会存在你遇到的问题:
// 编译环境:Win10,VC2019
//
#include <Windows.h>
#include <conio.h>
#include <stdio.h>
int main()
{
wchar_t c;
while (true)
{
if (_kbhit())
{
c = _getwch(); //_getch() 也会产生你遇到的问题
printf("[%c]", c);
}
printf(".");
Sleep(100);
}
return 0;
}
EasyX 的中文输入方案
如果要在 EasyX 中处理中文输入,使用 getmessage / peekmessage 获取字符消息即可,可以完美支持中文。参考以下代码:
// 编译环境:VC2019,EasyX_20210719
//
#include <graphics.h>
#include <stdio.h>
int main()
{
initgraph(640, 480);
int x = 0, y = 20; // 自动画圆的坐标
TCHAR s[100]; // 获取到的字符
int si = 0; // 字符存储位置
ExMessage msg; // 消息
while (true)
{
while (peekmessage(&msg))
{
if (msg.message == WM_CHAR)
{
s[si] = msg.ch;
s[si + 1] = 0;
outtextxy(0, si * 12 % 470, s);
si = (si + 1) % 98;
}
}
x += 2;
if (x >= 640)
{
x = 0; y += 20;
}
circle(x, y, 5);
Sleep(20);
}
return 0;
}