在没有将光标移动到新行之前,在gotoxy(80,25)位置上写入字符

writing a char on gotoxy(80, 25) position without having cursor moved to new line

本文关键字:位置 字符 gotoxy 移动 光标 新行之      更新时间:2023-10-16

我正在尝试在我的输出中绘制一个框架。

我的窗口大小是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。

我知道这不是一个不寻常的行为。
难道就没有别的办法摆脱这个……吗?如果没有,我将无法使用最后一行在我的框架。

我在Windows 8 x64操作系统中使用DosBox运行Turbo c++。所以我不能手动设置窗口的高度从窗口的属性,我总是这样做。

终端文本模式分辨率为80 * 24。也许可以画到24个而不是25个?

尽快摆脱TC。删除TC后,检查护士

我认为你可以延长24/25行的限制。命令提示符应该可以滚动一段时间