スポンサーリンク

curs_window

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

名称

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_ybegin_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 はマクロである可能性があることに注意してください。

バグ

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

関連項目

ncurses(3), curs_refresh(3), curs_touch(3)

スポンサーリンク