1

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;
}
4

3 に答える 3

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;
        }
于 2012-05-04T11:47:17.823 に答える
0

Code::Blocks(MinGW) には conio.h ヘッダー ファイルがありません。したがって、 getch() 関数を使用することはできません。

于 2012-05-04T11:55:57.587 に答える
0

実際、conio.h は Code :: Blocks http://en.wikipedia.org/wiki/C_standard_libraryでサポートされていない標準ヘッダー ファイルではありません

getch() の定義が conio.h にしか見つからないため、scanf を試行してユーザー入力を取得するというエラーが表示されます。

于 2012-05-04T11:35:31.423 に答える