Win11下_kbhit() 和 getch() 获取不到键盘信息问题
在进行easyX图形开发,创建窗口时,需要采用_kbhit() and getch()获取键盘输入信息对窗口中的元素进行操作,具体情况如下:
需要按下空格键使人物进行跳跃操作,代码如下:
//处理用户按键输入
void keyEvent() {
char ch;
printf("1");//TEST
if (_kbhit()) {//如果按键按下,_kbhit返回为真
printf("2");//TEST
ch = _getch();//_getch()不需要按下回车即可直接读取
if (ch == ' ') {
jump();
}
}
}
经过测试发现并没有进入if语句内(条件不满足)
后查阅资料发现,问题出在Win11控制台上。
kbhit() 和 getch()都是库文件conio.h中的函数,conio是控制台输入输出的简写(Console input/output),kbhit() 和 getch() 为控制台函数,仅在控制台程序中可用,在窗口程序中不能用。
当电脑选中终端的时候按下空格,窗口中人物可完成跳跃
解决办法:更改Win11系统
1.设置-系统
2.开发者选项
3.终端选择
4.选择Windows控制台主机
即可在窗口界面实现_kbhit()和getch()
仅供参考(学习用)