리눅스 프로그래머를 위한 가이드
8.10 단말기 업데이트 (Updating the Trminal)
개요에 쓰였던 것처럼, ncurses 윈도우들은 메모리 안에 있는 이미지들이다. 이것은 윈도우에서의
어떤 변화가 refresh가 수행될 때까지 물리적인 화면에 인쇄되지 않는다는 것을 의미한다. 이것은
많은 조종이 있을 수 있기 때문에 화면에 대한 출력을 최적화하고 화면에 그것을 인쇄하기 위해
refresh를 한번 호출한다. 그렇지 않으면, 모든 변화가 화면에 인쇄되어 지고 프로그램의 성능
(performance)를 감소시킨다.
- int refresh()
int wrefresh(win)
refresh()는 단말기로 복사를 하고 wrefresh(win)는 윈도우 이미지로 복사한다.
- int wnoutrefresh(win)
int doupdate()
wnoutrefresh(win)는 오직 윈도우 win으로 복사한다. 이것은 단말기에 대한 출력이
수행되지는 않지만 가상의 화면에 실제적으로 프로그래머가 원하는 대로 보여짐을 의미한다.
doupdate()는 단말기에 출력을 수행할 것이다. 프로그램은 여러가지 윈도우들을 바꿀 수
있고 모든 윈도우에 대해 wnoutrefresh(win)를 호출할 수 있고 오직 한번 물리적인 화면을
업데이트하기 위해 doupdate()를 호출할 수 있다.
예를 들어, 두개의 윈도우를 가지는 다음의 프로그램이 있다. 텍스트의 몇몇 줄을 변경하여 양쪽
윈도우들을 바꾼다. wrefresh(win)을 가지고 changewin(win)를 write할 수 있다.
이것은 ncurses가 단말기를 두번 업데이트하게 하여 실행을 느리게 한다. doupdate()를
가지고 changewin(win)와 main 함수를 변경시키고 성능(performance)을 향상시킨다.
- 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 up으로 부터 start+count까지 줄들이 조종되었음을 알린다.
예를 들어, 몇몇 윈도우가 중첩되었을 때, 한 윈도우에 대한 변화는 다른 것들로 부터 이미지에
영향을 받지 않을 것이다.
wtouchln(...)은 y로 부터 시작하여 n개의 줄을 건드릴 것이다. change가 TRUE이면
그 줄들은 변경되고(touched,changed) 그렇지 않으면 변경되지 않는다(untouched,unchanged).
untouchwin(win)는 refresh의 마지막 호출 이후 윈도우 win에 unchanged
표시를 할 것이다.
- int is_linetouched(win, line)
int is_wintouched(win)
이러한 함수들을 가지고 줄 line 또는 윈도우 win이 refresh()의 마지막 호출 이후에
변경이 있었는지를 체크할 수 있다.
이전:8.9 윈도우와 줄 지우기 (Clear Window and Lines)
다음:8.11 비디오 속성과 색상 (Video Attributes and Color)
Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved
Email To:Webmaster ,
Another address
LAST UPDATE Dec 15,1997
Created Dec 15,1997