curs_window(3) | Library Functions Manual | curs_window(3) |
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関数を呼ぶと、与えられた列数と行数を持つ新規ウィンドウを生成し、
そのポインタを返す。
ウィンドウの左上の行が
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
ウィンドウの中心で生成され、一方のウィンドウへの変更は
双方のウィンドウに対して影響を及ぼす。
サブウィンドウは orig
ウィンドウとメモリを共有する。
この関数を使用する際には、サブウィンドウ上で
wrefresh を呼ぶ前に
orig上で touchwin 又は touchline
を呼ぶ必要がある。
derwin関数は subwin
を呼ぶのと同様であり、begin_y
と
begin_x
がスクリーンではなく
orig
ウィンドウに相対的である点を除いては、サブウィンドウとの違いはない。
mvderwin関数は親ウィンドウ内部で得られるウィンドウ(あるいはサブウィンドウ)を動かす。 スクリーンに対して相対的であるウィンドウの引数は変更されない。 この関数はスクリーン上で物理的に同じ位置にある親ウィンドウとの差異点を描画する のに使用される。
dupwin関数は win ウィンドウの正確な複製を生成する。
wsyncup関数は win で変更がなされた win の祖先のあらゆる位置情報 を更新する。 もし syncok が第二引数として TRUE とともに呼び出されたらならば、 ウィンドウに変更があるときはいつでも wsyncup が自動的に呼ばれる。
wsyncdown関数は祖先のウィンドウの変更点を win へと反映する。 この関数は wrefresh により呼び出され、手動で呼び出す必要はないはずだ。
wcursyncup関数はウィンドウのカーソル位置を反映するために、 全ての祖先のウィンドウのカーソル位置を更新する。
整数を返す関数は整数値
ERR
を失敗時点で返し、OK
(SVr4 では
"ERR以外の整数値"と明記。)を成功時に返す。
ウィンドウへ多くの些細な変更がなされた場合、wsyncup オプションはパフォーマンスの低下をもたらす。
syncok がマクロかも知れないことに注意。
サブウィンドウ関数(subwin, derwin, mvderwin, wsyncup, wsyncdown, wcursyncup, syncok)は 不完全な実装であり、充分にテストがなされていない。
System V curses 文書は wsyncup
及び wsyncdown
の実際の振る舞いについて非常に不明瞭である。
これらは単に祖先の変更により影響を受ける行を更新することになっているようである。
ここでの言語、および
curses
の実装の振る舞いは
XPG4 curses
標準に準拠している。
XPG4
仕様は遅々としながらも更新されるかもしれない。
XSI Curses 準拠、第4章でこれらの関数について既述がある。