curs_window(3)

名称
newwin, delwin, mvwin, subwin, derwin, mvderwin, dupwin, wsyncup, syncok, wcursyncup, wsyncdown - create ncurses windows

書式
#include <ncurses.h> WINDOW *newwin(int nlines, int ncols, int begin_y,
      intbegin_x); int delwin(WINDOW *win);
int mvwin(WINDOW *win, int y, int x);
WINDOW *subwin(WINDOW *orig, int nlines, int ncols,
      int begin_y, int begin_x); WINDOW *derwin(WINDOW *orig, int nlines, int ncols,
      int begin_y, int begin_x); int mvderwin(WINDOW *win, int par_y, int par_x);
WINDOW *dupwin(WINDOW *win);
void wsyncup(WINDOW *win);
int syncok(WINDOW *win, bool bf);
void wcursyncup(WINDOW *win);
void wsyncdown(WINDOW *win);

解説
newwin ルーチンは、指定数の行と列のある新しいウィンドウを指すポインタを 作成して返します。ウィンドウの左上コーナーが行 begin_y 、列 begin_x です。 nlines または ncols のどちらかがゼロの場合、デフォルトで LINES - begin_y および COLS - begin_x になります。新しいフルスクリーンウィンドウは newwin(0,0,0,0) を呼び出すことで作成されます。 delwin ルーチンは、名前付きウィンドウを削除し、それに対応するすべてのメモリ を解放します ( 実際にはウィンドウの画面イメージを消去しません ) 。 サブウィンドウを削除してから、メインウィンドウを削除します。 mvwin ルーチンは、左上コーナーが位置 (x, y) にあるようにウィンドウを 移動します。移動によってウィンドウが画面からはみ出てしまう場合は、それは エラーとなりウィンドウは移動されません。サブウィンドウを 移動することもできますが、これは避けてください。 subwin ルーチンは、指定数の行 nlines と列 ncols のある新しいウィンドウを 指すポインタを作成して返します。ウィンドウは画面上の位置 (begin_y, begin_x) にあります ( この位置は画面に相対的であって、ウィンドウの orig に相対的にではありません ) 。ウィンドウはウィンドウ orig の中央に作成されるので、 1 つのウィンドウについて行われた変更は両方のウィンドウに 影響を及ぼします。サブウィンドウはウィンドウ orig とメモリを共有します。 このルーチンを使用するときは、サブウィンドウで wrefresh を呼び出す前に、 orig 上に touchwin または touchline を呼び出す必要があります。 derwin ルーチンは subwin と同じですが、 begin_y と begin_x が、画面ではなくウィンドウ orig の原点に相対的であり点は異なります。サブウィンドウと 導出されたウィンドウの間に違いはありません。 mvderwin ルーチンは、親ウィンドウの内部の導出されたウィンドウ ( またはサブウィンドウ ) を移動します。ウィンドウの画面に相対的なパラメータは 変更されません。このルーチンを使用して、画面上の同じ物理的位置に親 ウィンドウのさまざまな部分を表示できます。 dupwin ルーチンは、ウィンドウ win の正確な複製を作成します。 ncurses の各ウィンドウは、キャラクタイメージ構造とステータス構造という 2 つのデータ構造を保持します。キャラクタイメージ構造は、 ウィンドウ階層内のすべてのウィンドウの間で共有されます ( すなわち、すべてのサブウィンドウのあるウィンドウです ) 。ウィンドウ内の個別の行変更に関する 情報が入っているステータス構造はお互いのウィンドウに対してプライベート です。ルーチン wrefresh は、画面更新を実行するときにステータスデータ構造を 使用します。ステータス構造は共有ではないので、階層内の 1 つのウィンドウに 対して行われた変更は画面上に適切に反映されない可能性があります。 ルーチン wsyncup は、ウィンドウのステータス構造内の変化が、その先祖の ステータス構造内に反映されるようにします。 syncok が 2 番めの引数 TRUE を 指定して呼び出された場合、ウィンドウ内に変更があるたびに、 wsyncup が自動的に呼び出されます。 ルーチン wcursyncup は、ウィンドウのすべての先祖の現在のカーソル位置を 更新して、ウィンドウの現在のカーソル位置を反映するようにします。 ルーチン wsyncdown は、ウィンドウのステータス構造を更新して、先祖の ステータス構造の変化を反映するようにします。アプリケーションがこのルーチン を呼び出すことはほとんどありません。 wrefresh によって自動的に呼び出されるからです。

戻り値
ルーチンが、処理失敗すると整数 ERR を返してきます。処理が正常に完了した場合は、 ERR 以外の整数値を返します。 delwin は処理失敗すると整数 ERR を返し、処理が正常に完了すると OK を返します。 ポインタを返すルーチンはエラーがあると NULL を返します。

注釈
ウィンドウに多数の小さい変更が行われる場合、 wsyncup オプションによって性能が低下する可能性があります。 syncok はマクロである可能性があることに注意してください。

バグ
サブウィンドウ関数 (subwin 、 derwin など ) は、脆く、実現が不完全であり、良く 試験されていません。特に、スクロールとの相互作用においてです。

関連項目
ncurses(3), curs_refresh(3), curs_touch(3)