newwin(3) derwin,

書式

#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章でこれらの関数について既述がある。