curs_refresh(3)

名称
refresh, wrefresh, wnoutrefresh, doupdate, redrawwin, wredrawln - refresh ncurses windows and lines

書式
#include <ncurses.h> int refresh(void);
int wrefresh(WINDOW *win);
int wnoutrefresh(WINDOW *win);
int doupdate(void);
int redrawwin(WINDOW *win);
int wredrawln(WINDOW *win, int beg_line, int num_lines);

解説
端末への実際の出力を得るためには、 refresh ルーチンと wrefresh ルーチン ( または wnoutrefresh と doupdate ) を呼び出す必要があります。他のルーチンは データ構造を操作するだけだからです。ルーチン wrefresh は、名前付き ウィンドウを物理的な端末画面にコピーし、その際、最適化を行うために、 既にそこにあるものを考慮します。 refresh ルーチンも同じであり、デフォルトのウィンドウとして stdscr を使用します。 leaveok が有効になっている場合を 除いて、端末の物理カーソルはそのウィンドウ用のカーソルの位置に残されます。 wnoutrefresh ルーチンと doupdate ルーチンによって、 wrefresh 単独でより 効率的に複数の更新ができます。すべてのウィンドウ構造に加えて、 ncurses は、端末画面を表す次の 2 つのデータ構造を保持します。物理画面は、画面上に 実際にあるものを記述し、仮想画面は、プログラマが画面に表示したいものを 記述します。 ルーチン wrefresh は、最初に wnoutrefresh を呼び出すことで機能します。 wnoutrefresh は、名前付きウィンドウを仮想画面にコピーしてから doupdate を 呼び出します。 doupdate は、仮想画面を物理画面に比較し、実際の更新を 行います。プログラマがいくつかのウィンドウを一度に出力することを希望する 場合は、 wrefresh を続けて何度も呼び出すと、 wnoutrefresh と doupdate が 交互に呼び出されることになり、いくつかの出力バーストが画面に出力されます。 各ウィンドウについて wnoutrefresh を最初に呼び出すと、 doupdate を一度呼び出すことが可能になり、 1 回の出力のバーストだけが行われる結果になり、 送信される合計キャラクタは少なくなり、使用される CPU 時間は短くなります。 wrefresh への win 引数がグローバル変数 curscr である場合、画面は即座にクリアされ、ゼロから再描画されます。 redrawwin ルーチンは、 ncurses に、いくつかの画面行が破損しており、それらを 廃棄した後で、それらの上に何かを書き込むことを示します。これらのルーチンは エディタのようなプログラム用に使用できます。これは、画面の一部または 画面全体を再描画するコマンドを必要とします。ルーチン redrawln の方が redrawwin より望ましくあります。 redrawwin では、通信回線にノイズ があるものがあり、ウィンドウ全体を再描画すると、さらに多くの通信ノイズを 受ける可能性があります。いくつかの行だけを再描画すると、それらが損傷なく 表示される可能性があります。

戻り値
すべてのルーチンが、処理失敗すると整数 ERR を返します。処理が正常に完了した場合は、 ERR 以外の整数値を返します。

注釈
refresh と redrawwin はマクロである可能性があることに注意してください。

関連項目
ncurses(3), curs_outopts(3)