Unix Man (Справочное руководство)


CURSES(3X) - часть 6


wnoutrefresh (win)
doupdate ( )

Эти две процедуры обеспечивают более эффективное изменение экрана, чем просто wrefresh. Это делается следующим образом.

Процедуры пакета curses хранят две структуры данных, представляющих экран терминала: физический экран, описывающий реальное состояние экрана и виртуальный экран, описывающий то, что программист хочет видеть на экране. Процедура wrefresh сначала вызывает процедуру wnoutrefresh, которая копирует указанное окно на виртуальный экран, а затем обращается к doupdate для сравнения виртуального экрана с физическим и выполнения необходимых изменений на физическом экране. Если программист хочет изменить сразу несколько окон, то несколько вызовов wrefresh приведут к последовательным вызовам wnoutrefresh и doupdate, то есть к нескольким всплескам на экране. Если же вначале сделать несколько вызовов wnoutrefresh, а потом один вызов doupdate, то на экране будет один всплеск, на терминал будет передано меньшее число символов и процессор будет меньше загружен.

WINDOW *newwin (nlines, ncols, begin_y, begin_x)

Создать новое окно, содержащее nlines строк и ncols колонок, и возвратить указатель на него. Левый верхний угол окна помещается в строке begin_y, колонке begin_x. Если nlines или ncols равны 0, размер окна будет LINES-begin_y строк и COLS begin_x колонок соответственно. Новое окно размером с целый экран создается вызовом newwin (0, 0, 0, 0).

mvwin (win, y, x)

Переместить указанное окно так, чтобы его левый верхний угол находился в позиции (y, x). Если перемещение выводит окно за пределы экрана, это считается ошибкой и перемещение окна не выполняется.

WINDOW *subwin (orig, nlines, ncols, begin_y, begin_x)

Создать новое окно, содержащее nlines строк и ncols колонок, и возвратить указатель на него. Левый верхний угол окна помещается в строке begin_y, колонке begin_x (номер строки и колонки относительно экрана, а не относительно окна orig). Считается, что новое окно перекрывается с окном orig, то есть изменения в одном окне влияют на оба окна. При использовании этой процедуры обычно требуется перед обращением к wrefresh вызвать процедуры touchwin и touchline для окна orig.




Начало  Назад  Вперед