curs_initscr(3X) | curs_initscr(3X) |
名称
initscr, newterm, endwin, isendwin, set_term, delscreen - curses 画面の初期化と操作ルーチン書式
#include <curses.h>解説
initscr は通常、プログラムを初期化する場合に呼ぶ最初の curses ルーチンです。少数の特別のルーチンはその前に時々呼ぶ必要があります。 slk_init, filter, ripoffline, use_env があります。複数の端末のアプリケーションについては、 newterm が initscr の前に呼ばれるかもしれません。initscr コードは端末のタイプを決定し、 curses データ構造体をすべて初期化します。 initscr はさらに、画面をクリアする refresh を最初に呼び出します。エラーが生じる場合、 initscr は標準エラーに適切なエラーメッセージを書き込んで終了します。そうでなければ、ポインタは stdscr に返されます。
2 つ以上の端末に出力するプログラムは initscr ではなく各端末のために newterm ルーチンを使用するべきです。ケーパビリティを検査する必要のあるプログラムは、端末が画面指向のプログラムをサポートすることができない場合、それはライン指向のモードで走り続けることができるので、同様に newterm を使用するでしょう。ルーチン newterm は、各端末のために一度呼ばれるべきです。それは、その端末への参照として保存されるべき、タイプ SCREEN * の変数を返します。引数は、 $TERM、端末への出力用のファイルポインタおよび端末からの入力用の別のファイルポインタ ( type が NULL である場合に、 $TERM が使用されるでしょう) の代わりに使用される端末の type です。プログラムは、さらに curses から出る前に使用されている各端末のために endwin を呼ばなければなりません。 newterm が同じ端末に対して二度以上呼ばれる場合、参照される最初の端末は endwin が呼ばれる最後のものでなければなりません。
プログラムは、一時的に curses モードから出るか退避する前に endwin を常に呼ぶべきです。このルーチンは tty モードを回復し、画面の下左角にカーソルを移動させて、適切な視覚的でない (ノンビジュアル) モードへ端末をリセットします。一時的な退避の後に refresh または doupdate を呼ぶことはプログラムに視覚的な (ビジュアル) モードを再開させます。
isendwin は endwin が wrefresh への後の呼び出しなしで呼ばれた場合、 TRUE を返し、そうでなければ FALSE を返します。
set_term ルーチンは異なる端末の間で切り替わるために使用されます。 new を参照する画面は新しい現在の端末になります。前の端末はルーチンによって返されます。これは SCREEN ポインタを操作するただ一つのルーチンです。他のすべてのルーチンは現在の端末だけに影響します。
delscreen ルーチンは、 SCREEN データ構造体に関連した記憶域を解放します。 endwin ルーチンはこれをしません。したがって、特別の SCREEN がもはや必要でない場合、 delscreen は endwin の後に呼ばれるべきです。
戻り値
endwin は、失敗すると ERR を返します。成功して終了すれば、 OK を返します。ポインタを返すルーチンは、エラーの場合、常に NULL を返します。
X/Open は、エラー条件を何も定義していません。この実装では、 endwin は、端末が初期化されていなければ、エラーを返します。
注
initscr および newterm はマクロであるかもしれないことに注意してください。移植性
これらの関数は、XSI Curses standard, Issue 4 に記述されています。それは移植性のあるアプリケーションは initscr を 2 度以上呼んではならないことを明記しています。例えば BSD 4.4 などの古いバージョンの curses はエラーが検知される場合、終了するのではなく、 initscr から NULL ポインタが返されます。それは安全ですが、 XSI Curses の initscr の返り値をチェックするのには余分です。