c++linux控制台清除屏幕的一个区域

c++ linux console clear an area of the screen

本文关键字:一个 区域 控制台 清除 屏幕 c++linux      更新时间:2023-10-16

我正在尝试创建一个函数来清理屏幕上的一个区域。这是我的功能:

void clearBuffer(CoordCR start, CoordCR end) const // Clear an area on screen
{
    for (int i1 = 0; i1 < end.COLS; i1++)
    {
        for (int i2 = 0; i2 < end.ROWS; i2++)
        {
            setCursorPos(start.COLS + i1 - 1, start.ROWS + i2 - 1);
            printf(" ");
        }
    }
}

setCursorPos只是一个改变光标位置的函数,用来写"字符,从而清除屏幕。seCursorPos的第一个参数是要走的列,第二个参数是行。我的CoordCR结构是:

struct CoordCR {
    int COLS;
    int ROWS;
};

我只给这个函数左上角和右下角,她用空格代替所有字符。这个功能在windows上运行得很好,但她在linux上被窃听了,我不明白为什么。谢谢你的帮助。

setCursorPos是一个Win-API函数。对于Linux版,您可以在以下线程中找到答案:如何在linux上用C设置鼠标光标的位置?

嗯。。。SetCursorPos(注意不同的大小写)是一个Win32函数。关于如何在linux上的c中设置鼠标光标位置的链接,除了简短地提到ncurses之外,大部分内容都与此无关。对于给定的简单示例,通常使用ncurses的低级termcap接口,即tgoto来定位光标。这将允许您使用printf在屏幕上进行书写。带参数的termcap问题提到了这一点——但请阅读整个termcap手册页面(您必须首先使用tgetent初始化)。