2015-02-08 295 views
0

我正在尝试做一个清理屏幕区域的功能。这里是我的功能:C++ linux控制台清除屏幕上的一个区域

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的第一个参数是cols去,第二个是行。 我CoordCR结构是:

struct CoordCR { 
    int COLS; 
    int ROWS; 
}; 

我只是给这个函数左上点和右下点,她用空格替换所有的字符。 这个函数在Windows上工作正常,但她在Linux上被窃听,我不明白为什么。 感谢您的帮助。

+0

不应该''for'循环从开始坐标运行到结束坐标而不是从'0'开始? – 2015-02-08 16:33:28

+0

刚刚打印换行直到屏幕被清除为止呢? – Downvoter 2015-02-08 18:21:36

+0

我的目标是清除一个区域并不是所有的屏幕。 – loustak 2015-02-09 08:20:36

回答

0

setCursorPos是一个Win-API函数。对于Linux的对应,你可能会在这个线程下找到你的答案: How to set mouse cursor position in C on linux?

+0

我做了我自己的函数'setCurosrPos'来移动终端的光标(不是鼠标!) – loustak 2015-02-09 08:13:39

0

那么...... SetCursorPos(注意大小写不同)是一个Win32函数。建议的链接how to set mouse cursor position in c on linux除了简要提及ncurses外,大部分都不相关。对于给出的简单例子,通常会使用ncurses的低级termcap接口,即tgoto来定位光标。这可以让你使用printf来写入屏幕。 termcap with parameters问题提到 - 但阅读整个termcap手册页(您必须先用tgetent初始化事物)。

+0

我做了我自己的函数setCurosrPos来移动终端的光标,我认为它工作正常我可以在这里粘贴我的代码。 – loustak 2015-02-09 08:14:38

+0

这将有助于讨论。 – 2015-02-09 09:19:22

+0

好吧,问题是我的功能太慢了,更多我的算法有'I1 = O'的问题和i2相同。谢谢,问题解决了。 – loustak 2015-02-09 17:22:05