在gotoxy(80,25)位置写一个字符而不将光标移动到新行

时间:2012-12-25 17:16:46

标签: c++ turbo-c++ dosbox

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

我的窗口大小为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是最后一行,将光标移动到下一行会使我的框架显示错误。之前绘制的所有水平线向上移动一个。

我知道这不是一种不寻常的行为 但是没有任何其他选择摆脱这个..?如果不是,我将无法在我的框架中使用最后一行。

我正在使用DosBox在Windows 8 x64操作系统中运行Turbo C ++。因此,我无法手动设置窗口高度,而不是我以前常用的窗口属性。

2 个答案:

答案 0 :(得分:2)

终端文本模式分辨率为80 x 24。最多可以抽取24而不是25?

尽快摆脱TC。在你摆脱TC之后结帐ncurses。

答案 1 :(得分:0)

我认为你可以扩展24/25线路限制。命令提示符应该可以滚动很长一段时间。