スポンサーリンク

curs_refresh

名称
書式
解説
戻り値
注釈
関連項目

名称

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 ルーチン ( または wnoutrefreshdoupdate ) を呼び出す必要があります。他のルー チンはデータ構造を操作するだけだからです。ルーチン wrefresh は、名前 付 き ウィンドウを物理的な端末画面にコピーし、その際、最適化を行うために、 既にそこにあるものを考慮します。 refresh ルーチンも同じであり、デフォル トのウィンドウとして stdscr を使用します。 leaveok が有効になっている場 合を除いて、端末の物理カーソルはそのウィンドウ用のカーソルの位置に残 さ れます。

wnoutrefresh ルーチンと doupdate ルーチンによって、 wrefresh 単独でより 効率的に複数の更新ができます。すべてのウィンドウ構造に加えて、 ncurses は、端末画面を表す次の 2 つのデータ構造を保持します。物理画面は、画面上 に実際にあるものを記述し、仮想画面は、プログラマが画面に表示したいも の を記述します。

ルー チン wrefresh は、最初に wnoutrefresh を呼び出すことで機能します。 wnoutrefresh は、名前付きウィンドウを仮想画面にコピーしてから doupdate を 呼び出します。 doupdate は、仮想画面を物理画面に比較し、実際の更新を 行います。プログラマがいくつかのウィンドウを一度に出力することを希望 す る場合は、 wrefresh を続けて何度も呼び出すと、 wnoutrefreshdoupdate が交互に呼び出されることになり、いくつかの出力バーストが画面に出力さ れ ま す。 各ウィンドウについて wnoutrefresh を最初に呼び出すと、 doupdate を一度呼び出すことが可能になり、 1 回の出力のバーストだけが行われる結果 になり、送信される合計キャラクタは少なくなり、使用される CPU 時間は短く なります。 wrefresh への win 引数がグローバル変数 curscr である場合、画 面は即座にクリアされ、ゼロから再描画されます。

redrawwin ルーチンは、 ncurses に、いくつかの画面行が破損しており、それ らを廃棄した後で、それらの上に何かを書き込むことを示します。こ れ ら の ルー チンはエディタのようなプログラム用に使用できます。これは、画面の一 部または画面全体を再描画するコマンドを必要とします。ルーチ ン redrawln の 方が redrawwin より望ましくあります。 redrawwin では、通信回線にノイ ズがあるものがあり、ウィンドウ全体を再描画すると、さらに多くの通信ノ イ ズ を受ける可能性があります。いくつかの行だけを再描画すると、それらが損 傷なく表示される可能性があります。

戻り値

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

注釈

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

関連項目

ncurses(3), curs_outopts(3)

スポンサーリンク