curs_window(3x) curs_window(3x)
newwin, delwin, mvwin, subwin, derwin, mvderwin, dupwin, wsyncup, syncok, wcursyncup, wsyncdown - create curses windows - 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);
Calling newwin creates and returns a pointer to a new win- dow with the given number of lines and columns. The upper left-hand corner of the window is at line begin_y, column begin_x newwin を呼び出すと、指定された行数と桁数を持つ新しい ウインドウを作り、ポインタを返します。 ウインドウの左上隅は 行 begin_y, 桁 begin_x です。 If either nlines or ncols is zero, they default to LINES - begin_y and COLS - begin_x. nlines または ncols がゼロのときは、デフォルトで LINES - begin_y と COLS - begin_x になります。 A new full-screen window is created by calling newwin(0,0,0,0). newwin(0,0,0,0) を呼び出すと新しい全画面ウインドウを 作成します。
Calling delwin deletes the named window, freeing all memo- ry associated with it (it does not actually erase the win- dow's screen image). Subwindows must be deleted before the main window can be deleted. delwin を呼び出すと、指定されたウインドウを削除し、 それに伴うすべてのメモリを解放します。(これは画面上の ウインドウ表示を実際には消去しません。) 先に子ウインドウを削除しないと親ウインドウを削除できません。
Calling mvwin moves the window so that the upper left-hand corner is at position (x, y). If the move would cause the window to be off the screen, it is an error and the window is not moved. Moving subwindows is allowed, but should be avoided. mvwin を呼び出すと、左上隅が (x, y) の位置になるように ウインドウを移動します。 移動によりウインドウが画面の外に出る場合、これはエラーとなり ウインドウは移動されません。 子ウインドウの移動は可能ですが、避けるべきです。
Calling subwin creates and returns a pointer to a new win- dow with the given number of lines, nlines, and columns, ncols. The window is at position (begin_y, begin_x) on the screen. The subwindow shares memory with the window orig, so that changes made to one window will affect both windows. When using this routine, it is necessary to call touchwin or touchline on orig before calling wrefresh on the subwindow. subwin を呼び出すと、与えられた行数 nlines と桁数 ncols を 持つ新しい子ウインドウを作り、ポインタを返します。 子ウインドウは画面上の (begin_y, begin_x) の位置になります。 子ウインドウはウインドウ orig とメモリを共有しますので、 一方のウインドウへの変更は両方のウインドウに影響します。 このルーチンを使う場合、子ウインドウへの wrefresh を 呼び出す前に、 orig に対して touchwin または touchline を 呼び出す必要があります。
Calling derwin is the same as calling subwin, except that begin_y and begin_x are relative to the origin of the win- dow orig rather than the screen. There is no difference between the subwindows and the derived windows. derwin を呼び出すことは、 subwin を呼び出すことと同じですが、 begin_y と begin_x が画面ではなくウインドウ orig の原点に 相対的な位置だということだけが異なっています。 ( subwin で作成した) 子ウインドウと ( derwin で作成した) 派生ウインドウの間には何も違いはありません。 Calling mvderwin moves a derived window (or subwindow) in- side its parent window. The screen-relative parameters of the window are not changed. This routine is used to dis- play different parts of the parent window at the same physical position on the screen. mvderwin を呼び出すと、派生ウインドウ (または子ウインドウ) を親ウインドウの中で移動します。 ウインドウの特性値で画面に相対的なものは変化しません。 このルーチンは親ウインドウ内の異なる部分を画面上の 同じ物理位置に表示するために使います。
Calling dupwin creates an exact duplicate of the window win. dupwin を呼び出すと、ウインドウ win の完全な複製を作ります。
Calling wsyncup touches all locations in ancestors of win that are changed in win. If syncok is called with second argument TRUE then wsyncup is called automatically whenev- er there is a change in the window. wsyncup を呼び出すと、ウインドウ win の中で変化した win の祖先ウインドウの中のすべての場所をタッチ (変更されたとマーク) します。 syncok を第 2 引数 TRUE とともに呼び出すと、ウインドウ内に 変化があったときはいつでも自動的に wsyncup が呼び出されます。
The wsyncdown routine touches each location in win that has been touched in any of its ancestor windows. This routine is called by wrefresh, so it should almost never be necessary to call it manually. wsyncdown ルーチンは、 win の祖先ウインドウのどれかの中で タッチされた win 内のすべての場所をタッチします。 このルーチンは wrefresh から呼び出されるので、手動で実行する 必要はほとんどないでしょう。
The routine wcursyncup updates the current cursor position of all the ancestors of the window to reflect the current cursor position of the window. wcursyncup ルーチンは、すべての祖先ウインドウの 現在カーソル位置を更新して、指定のウインドウの 現在カーソル位置を反映させます。
Routines that return an integer return the integer ERR up- on failure and OK (SVr4 only specifies "an integer value other than ERR") upon successful completion. 整数を返すルーチンは、失敗した場合に整数 ERR を、 正常終了の場合に OK ( SVr4 は「 ERR 以外の整数値」としか 指定していません) を返します。 Routines that return pointers return NULL on error. ポインタを返すルーチンは、エラーの場合に NULL を返します。 X/Open defines no error conditions. In this implementa- tion X/Open はエラーの条件を定義していません。この実装では delwin returns an error if the window pointer is null, or if the window is the parent of another window. ウインドウ・ポインタがヌルのとき、またはウインドウが 他のウインドウの親であるときにエラーを返します。 derwin returns an error if the parent window pointer is null, or if any of its ordinates or dimensions is negative, or if the resulting window does not fit in- side the parent window. 親ウインドウ・ポインタがヌルのとき、 または座標 (訳注: 原文は縦座標) か寸法のいずれかが 負のとき、または作成されるウインドウが親ウインドウの中に 収まらないときにエラーを返します。 dupwin returns an error if the window pointer is null. ウインドウ・ポインタがヌルのときにエラーを返します。 (訳注: delwin つづき) This implementation also maintains a list of windows, and checks that the pointer passed to delwin is one that it created, returning an error if it was not.. この実装はまた、ウインドウのリストを保持しており、 delwin に渡されたポインタが作成されたものかどうかを調べ、 そうでなかった場合にはエラーを返します。 mvderwin returns an error if the window pointer is null, or if some part of the window would be placed off-screen. ウインドウ・ポインタがヌルのとき、またはウインドウの 一部分が画面からはみ出すことになるときにエラーを返します。 mvwin returns an error if the window pointer is null, or if the window is really a pad, or if some part of the window would be placed off-screen. ウインドウ・ポインタがヌルのとき、またはウインドウが 実際にはパッドのとき、またはウインドウの一部分が 画面からはみ出すことになるときにエラーを返します。 newwin will fail if either of its beginning ordinates is negative, or if either the number of lines or columns is negative. 開始座標 (訳注: 原文は開始縦座標) が負のとき、 または行数もしくは桁数が負のときに失敗します。 syncok returns an error if the window pointer is null. ウインドウ・ポインタがヌルのときにエラーを返します。 subwin returns an error if the parent window pointer is null, or if any of its ordinates or dimensions is negative, or if the resulting window does not fit in- side the parent window. 親ウインドウ・ポインタがヌルのとき、 または座標 (訳注: 原文は縦座標) か寸法のいずれかが 負のとき、または作成されるウインドウが親ウインドウの中に 収まらないときにエラーを返します。 The functions which return a window pointer may also fail if there is insufficient memory for its data structures. Any of these functions will fail if the screen has not been initialized, i.e., with initscr or newterm. ウインドウ・ポインタを返す関数は、そのデータ構造のために 十分なメモリがない場合にも失敗します。 これらのどの関数も、 ( initscr か newterm によって) 画面が初期化されていないときには失敗します。
If many small changes are made to the window, the wsyncup option could degrade performance. ウインドウに小さな変更をたくさん行う場合、 wsyncup オプションは性能を低下させるかもしれません。 Note that syncok may be a macro. syncok はマクロであるかもしれないことに注意してください。
The subwindow functions (subwin, derwin, mvderwin, wsyn- cup, wsyncdown, wcursyncup, syncok) are flaky, incomplete- ly implemented, and not well tested. 子ウインドウ関数群 (subwin, derwin, mvderwin, wsyncup, wsyncdown, wcursyncup, syncok) は脆くて不完全な実装であり、 十分にテストされていません。 The System V curses documentation is very unclear about what wsyncup and wsyncdown actually do. It seems to imply that they are only supposed to touch exactly those lines that are affected by ancestor changes. The language here, and the behavior of the curses implementation, is pat- terned on the XPG4 curses standard. The weaker XPG4 spec may result in slower updates. System V curses の説明文書は wsyncup と wsyncdown が 実際に行うことについて非常に不透明です。 祖先ウインドウが影響を与えたそれらの行のみを厳密に タッチすることになっていると暗示しているかのようです。 ここの言葉づかいと curses の実装の挙動とが、 XPG4 curses standard の原型になっています。 XPG4 の非力な仕様は更新速度の低下をもたらすかもしれません。
The XSI Curses standard, Issue 4 describes these func- tions. これらの関数は XSI Curses standard, Issue 4 に 記載されています。
curses(3x), curs_refresh(3x), curs_touch(3x), curs_variables(3x) curs_window(3x)