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関数を呼ぶと、与えられた列数と行数を持つ新規ウィンドウを生成し、そのポインタを返す。ウィンドウの左上の行が
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章でこれらの関数について既述がある。
関連項目
curses(3X),
curs_refresh(3X),
curs_touch(3X)