curs_window 3x

curs_window(3x)                                         curs_window(3x)




名前

       newwin, delwin, mvwin, subwin, derwin, mvderwin, dupwin,
       wsyncup, syncok, wcursyncup, wsyncdown
        - curses ウインドウの作成と移動


書式

       #include <curses.h>

       WINDOW *newwin(
             int nlines, int ncols,
             int begin_y, int begin_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

        newwin を呼び出すと、指定された行数と桁数を持つ新しい
       ウインドウを作り、ポインタを返します。
        ウインドウの左上隅は
              行 begin_y,
              桁 begin_x です。

        nlines または ncols がゼロのときは、デフォルトで
              LINES - begin_yCOLS - begin_x
       になります。

        newwin(0,0,0,0) を呼び出すと新しい全画面ウインドウを
       作成します。


delwin

        delwin を呼び出すと、指定されたウインドウを削除し、
       それに伴うすべてのメモリを解放します。(これは画面上の
       ウインドウ表示を実際には消去しません。)
        先に子ウインドウを削除しないと親ウインドウを削除できません。


mvwin

        mvwin を呼び出すと、左上隅が (x, y) の位置になるように
       ウインドウを移動します。
        移動によりウインドウが画面の外に出る場合、これはエラーとなり
       ウインドウは移動されません。
        子ウインドウの移動は可能ですが、避けるべきです。


subwin

        subwin を呼び出すと、与えられた行数 nlines と桁数 ncols を
       持つ新しい子ウインドウを作り、ポインタを返します。
        子ウインドウは画面上の (begin_y, begin_x) の位置になります。
        子ウインドウはウインドウ orig とメモリを共有しますので、
       一方のウインドウへの変更は両方のウインドウに影響します。
        このルーチンを使う場合、子ウインドウへの wrefresh を
       呼び出す前に、 orig に対して touchwin または touchline を
       呼び出す必要があります。


derwin

        derwin を呼び出すことは、 subwin を呼び出すことと同じですが、
       begin_ybegin_x が画面ではなくウインドウ orig の原点に
       相対的な位置だということだけが異なっています。
        ( subwin で作成した) 子ウインドウと ( derwin で作成した) 
       派生ウインドウの間には何も違いはありません。

        mvderwin を呼び出すと、派生ウインドウ (または子ウインドウ) 
       を親ウインドウの中で移動します。
        ウインドウの特性値で画面に相対的なものは変化しません。
        このルーチンは親ウインドウ内の異なる部分を画面上の
       同じ物理位置に表示するために使います。


dupwin

        dupwin を呼び出すと、ウインドウ win の完全な複製を作ります。


wsyncup

        wsyncup を呼び出すと、ウインドウ win の中で変化した 
       win の祖先ウインドウの中のすべての場所をタッチ 
       (変更されたとマーク) します。
        syncok を第 2 引数 TRUE とともに呼び出すと、ウインドウ内に
       変化があったときはいつでも自動的に wsyncup が呼び出されます。


wsyncdown

        wsyncdown ルーチンは、 win の祖先ウインドウのどれかの中で
       タッチされた win 内のすべての場所をタッチします。
        このルーチンは wrefresh から呼び出されるので、手動で実行する
       必要はほとんどないでしょう。


wcursyncup

        wcursyncup ルーチンは、すべての祖先ウインドウの
       現在カーソル位置を更新して、指定のウインドウの
       現在カーソル位置を反映させます。


戻り値

        整数を返すルーチンは、失敗した場合に整数 ERR を、
       正常終了の場合に OK ( SVr4 は「 ERR 以外の整数値」としか
       指定していません) を返します。

        ポインタを返すルーチンは、エラーの場合に NULL を返します。

        X/Open はエラーの条件を定義していません。この実装では

       delwin
            ウインドウ・ポインタがヌルのとき、またはウインドウが
            他のウインドウの親であるときにエラーを返します。

       derwin
            親ウインドウ・ポインタがヌルのとき、
            または座標 (訳注: 原文は縦座標) か寸法のいずれかが
            負のとき、または作成されるウインドウが親ウインドウの中に
            収まらないときにエラーを返します。

       dupwin
            ウインドウ・ポインタがヌルのときにエラーを返します。

       (訳注: delwin つづき)
            この実装はまた、ウインドウのリストを保持しており、
            delwin に渡されたポインタが作成されたものかどうかを調べ、
            そうでなかった場合にはエラーを返します。

       mvderwin
            ウインドウ・ポインタがヌルのとき、またはウインドウの
            一部分が画面からはみ出すことになるときにエラーを返します。

       mvwin
            ウインドウ・ポインタがヌルのとき、またはウインドウが
            実際にはパッドのとき、またはウインドウの一部分が
            画面からはみ出すことになるときにエラーを返します。

       newwin
            開始座標 (訳注: 原文は開始縦座標) が負のとき、
            または行数もしくは桁数が負のときに失敗します。

       syncok
            ウインドウ・ポインタがヌルのときにエラーを返します。

       subwin
            親ウインドウ・ポインタがヌルのとき、
            または座標 (訳注: 原文は縦座標) か寸法のいずれかが
            負のとき、または作成されるウインドウが親ウインドウの中に
            収まらないときにエラーを返します。

        ウインドウ・ポインタを返す関数は、そのデータ構造のために
       十分なメモリがない場合にも失敗します。
        これらのどの関数も、 ( initscrnewterm によって) 
       画面が初期化されていないときには失敗します。


注意

        ウインドウに小さな変更をたくさん行う場合、 
       wsyncup オプションは性能を低下させるかもしれません。

        syncok はマクロであるかもしれないことに注意してください。


バグ

        子ウインドウ関数群 (subwin, derwin, mvderwin, wsyncup, 
       wsyncdown, wcursyncup, syncok) は脆くて不完全な実装であり、
       十分にテストされていません。

        System V curses の説明文書は wsyncupwsyncdown が
       実際に行うことについて非常に不透明です。
        祖先ウインドウが影響を与えたそれらの行のみを厳密に
       タッチすることになっていると暗示しているかのようです。
        ここの言葉づかいと curses の実装の挙動とが、 
       XPG4 curses standard の原型になっています。
        XPG4 の非力な仕様は更新速度の低下をもたらすかもしれません。


移植性

        これらの関数は XSI Curses standard, Issue 4 に
       記載されています。


関連項目

       curses(3x),  curs_refresh(3x),  curs_touch(3x),  
       curs_variables(3x)



                                                        curs_window(3x)