下一个: 8.11 视频属性和 向上: 8 字符单元图形 前一个: 8.9 清除窗口和
正如概述中所写,ncurses 窗口是内存中的图像。这意味着对窗口的任何更改都不会打印到物理屏幕上,直到完成刷新操作。这优化了屏幕的输出,因为您可以进行大量的操作,然后一次调用 refresh 将其打印到屏幕上。否则,每个更改都会被打印到终端,从而降低程序的性能。
- int refresh()
int wrefresh(win)
refresh() 复制到终端,wrefresh(win) 复制窗口图像到终端,然后使其看起来像虚拟屏幕。 - int wnoutrefresh(win)
int doupdate()
wnoutrefresh(win) 仅复制窗口win到虚拟屏幕。这意味着不会进行到终端的输出,但虚拟屏幕实际上看起来像是程序员想要的那样。doupdate() 将执行到终端的输出。程序可以更改多个窗口,为每个窗口调用 wnoutrefresh(win),然后调用 doupdate() 以仅更新物理屏幕一次。例如,我们有以下带有两个窗口的程序。我们通过更改一些文本行来更改这两个窗口。我们可以使用 wrefresh(win) 编写 changewin(win)。
这将导致 ncurses 更新终端两次,并减慢我们的执行速度。使用 doupdate() 我们更改 changewin(win) 和我们的主函数,将获得更好的性能。
- int redrawwin(win)
int wredrawln(win, bline, nlines)
当某些行或整个屏幕应该在写入任何新内容之前被丢弃时(可能是当行被破坏等情况),请使用这些函数。 - int touchwin(win)
int touchline(win, start, count)
int wtouchln(win, y, n, changed)
int untouchwin(win)
告诉 ncurses 整个窗口win或从start到start+count的行已被操作。例如,当您有一些重叠的窗口(如示例 .c 中所示)时,对一个窗口的更改不会影响另一个窗口的图像。
wtouchln(...) 将 touchn行,从y开始。如果change为 TRUE,则行被 touch,否则为 untouched(已更改或未更改)。
untouchwin(win) 将窗口标记为自上次调用 refresh() 以来未更改。winas unchanged since the last call to refresh().
- int is_linetouched(win, line)
int is_wintouched(win)
使用这些函数,您可以检查行line或窗口win自上次调用 refresh() 以来是否已被 touch。
下一个: 8.11 视频属性和 向上: 8 字符单元图形 前一个: 8.9 清除窗口和
转换于
Fri Mar 29 14:43:04 EST 1996