我在Windows XP中运行Code :: Blocks中的C程序。 我收到错误
"drawing operation is attempeted when there was no current window"
可能导致此问题的原因以及如何解决? 我的代码如下:
#include <stdio.h>
#include <conio.h>
static int get_code(void);
// System dependent key codes
enum
{
KEY_ESC = 27,
ARROW_UP = 256 + 72,
ARROW_DOWN = 256 + 80,
ARROW_LEFT = 256 + 75,
ARROW_RIGHT = 256 + 77
};
int main(void)
{
int ch;
puts("Press arrow keys, escape key + enter to exit:");
while (( ch = get_code()) != KEY_ESC )
{
switch (ch)
{
case ARROW_UP:
printf("UP\n");
break;
case ARROW_DOWN:
printf("DOWN\n");
break;
case ARROW_LEFT:
printf("LEFT\n");
break;
case ARROW_RIGHT:
printf("RIGHT\n");
break;
}
}
getchar(); // wait
return 0;
}
static int get_code(void)
{
int ch = getch(); // Error happens here
if (ch == 0 || ch == 224)
ch = 256 + getch();
return ch;
}
答案 0 :(得分:1)
α来自getche()
输入,它提示用户输入,当用户按下一个键然后输入它回显标准输出“屏幕”上的键,因为箭头是不可打印的键这就是你可以做的事情:
switch (ch)
{
case ARROW_UP:
printf("\bUP\n");
break;
case ARROW_DOWN:
printf("\bDOWN\n");
break;
case ARROW_LEFT:
printf("\bLEFT\n");
break;
case ARROW_RIGHT:
printf("\bRIGHT\n");
break;
}
答案 1 :(得分:0)
实际上,conio.h不是Code :: Blocks中不支持的标准头文件 http://en.wikipedia.org/wiki/C_standard_library
getch()定义仅在conio.h中找到,因此显示错误 尝试scanf来获取用户输入。
答案 2 :(得分:0)
Code :: Blocks(MinGW)没有conio.h头文件。所以你不能使用getch()函数。