出力にフレームを描画しようとしています。
私のウィンドウのサイズは 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++ を実行しています。そのため、ウィンドウのプロパティからウィンドウの高さを手動で設定することはできません。