総合手引 | セクション 3 | English | オプション |
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);
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 では、通信回線にノイズ があるものがあり、ウィンドウ全体を再描画すると、さらに多くの通信ノイズを 受ける可能性があります。いくつかの行だけを再描画すると、それらが損傷なく 表示される可能性があります。
curs_refresh (3) |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Never write it in C if you can do it in `awk'; Never do it in `awk' if `sed' can handle it; Never use `sed' when `tr' can do the job; Never invoke `tr' when `cat' is sufficient; Avoid using `cat' whenever possible. |
” |
— Taylor's Laws of Programming |