curs_clear(3x) curs_clear(3x)
erase, werase, clear, wclear, clrtobot, wclrtobot,
clrtoeol, wclrtoeol
- curses ウインドウの一部または全部を消去する
# include <curses.h>
int erase(void);
int werase(WINDOW *win);
int clear(void);
int wclear(WINDOW *win);
int clrtobot(void);
int wclrtobot(WINDOW *win);
int clrtoeol(void);
int wclrtoeol(WINDOW *win);
erase と werase ルーチンはウインドウ内のすべての位置に空白を
コピーして画面を消去します。
clear と wclear ルーチンは erase と werase に似ていますが、
これらは clearok も呼び出すため、ウインドウに対する
次の wrefresh 呼び出しで画面は完全に消去され、
初めから描き直されます。
clrtobot と wclrtobot ルーチンは、カーソル位置から
画面の最後までを消去します。
すなわち、ウインドウのカーソルより下のすべての行を消去し、
さらに、現在行のカーソル位置を含めてその右側をも消去します。
clrtoeol と wclrtoeol ルーチンは現在行のカーソル位置を
含めてその右側を現在行の終わりまで消去します。
消去で作成される空白は (wbkgdset で設定される) 現在の背景の
表示属性を持つようになります。
(訳注: wbkgdset … curs_bkgd(3x) 参照)
すべてのルーチンは成功のとき整数 OK を、失敗のとき ERR を
返します。
SVr4.0 マニュアルには「または、immedok がセットされていれば
負でない整数」と書かれていますが、これは間違いであると
思われます。
X/Open はエラーの条件を何も定義していません。
この実装では、ウインドウ・ポインタ引数を用いる関数は、
その引数がヌルのとき、エラーを返します。
erase, werase, clear, wclear, clrtobot, clrtoeol は
マクロであるかもしれないことに注意してください。
XSI Curses standard, Issue 4 はこれらの関数を記載しており、
失敗のとき ERR を返すと明記していますが、エラーの条件を何も
指定していません。
curses の歴史的ないくつかの実装では、明文化されていない
機能として、 touchwin(stdscr) または clear(stdscr) とする
ことで clearok(..., 1) と同等な処理ができました。
これは ncurses では動作しません。
この実装や Solaris のような他の実装では、werase() と
wclear() による消去の後に現在位置を 0, 0 に設定します。
この事実は他の実装では明記されておらず、SVr4 のソースから
派生していない実装では正しくないかもしれません。
説明からは明らかでありませんが、多くの実装では
子ウインドウや派生ウインドウに対しても wclear の後に
画面を消去します。
次の wrefresh まで画面を消去したくない場合は、
代わりに werase を使ってください。
curses(3x), curs_outopts(3x), curs_refresh(3x),
curs_variables(3x)
curs_clear(3x)