0

出力にフレームを描画しようとしています。

私のウィンドウのサイズは 80x25 (幅 x 文字の高さ) です

以下のコードを使用して、すべての線を正常に描画しました。しかし、最後のポイント (80, 25) に書き込むと、カーソルが処理できない次の行に移動します。

私のコードは以下の通りです:

#include <iostream.h>
#include <conio.h>

void DrawFrame(int);
void DrawHoriLine(int, int, int, int, int);

void main()
{
    clrscr();
    DrawFrame(GREEN);
    getch();
}

void DrawFrame(int color)
{
    DrawHoriLine(2,  1, 78, 205, color);
    DrawHoriLine(2,  3, 78, 196, color);
    DrawHoriLine(2, 22, 78, 196, color);
    DrawHoriLine(2, 24, 78, 205, color);
    gotoxy(1, 3);   cprintf("%c", 198);
    gotoxy(80, 3);  cprintf("%c", 181);
    gotoxy(1, 1);   cprintf("%c", 213);
    gotoxy(80, 1);  cprintf("%c", 184);
    gotoxy(1, 25);  cprintf("%c", 212);
    gotoxy(80, 25); cprintf("%c", 190);  //*** Here is problem
}

void DrawHoriLine(int x, int y, int length, int charCode, int color)
{
    gotoxy(x, y);
    textcolor(color);
    for (int i=0; i<length; i++)
        cprintf("%c", charCode);
}

25 は最後の行であり、カーソルを次の行に移動すると、フレームが正しく表示されなくなります。以前に描画されたすべての水平線が 1 つ上に移動しました。

これが異常な動作ではないことはわかっています。
しかし、これを取り除く他のオプションはありませんか..?そうしないと、フレームの最後の行を使用できなくなります。

DosBox を使用して Windows 8 x64 OS で Turbo C++ を実行しています。そのため、ウィンドウのプロパティからウィンドウの高さを手動で設定することはできません。

4

2 に答える 2

2

端末のテキスト モードの解像度は 80 x 24 です。多分 25 ではなく 24 まで描画しますか?

できるだけ早く TC を取り除きます。TC を削除した後、ncurses をチェックアウトします。

于 2012-12-25T17:30:38.117 に答える
0

24/25回線制限を延長できると思います。コマンド プロンプトは、しばらくスクロールしても問題ありません。

于 2016-09-22T01:30:08.580 に答える