ファイヤープロジェクト
とりあえずウィンドウを出してみる
2003-07-20T15:13+09:00   matsu
何はともあれウィンドウを出してみる.
cursesはキャラクタのみで構成されている画面を効率良く更新するためのライブラリである.私のマシンではncurses(new curses)が入っている.cursesはもともとSVr4などのライブラリだったらしいが,ncursesはfreeでらしい.で,画面を効率良く更新するために,cursesでは二つの構造体stdscrとcurstrを保持する.cursesのユーザはcursesのライブラリを通してstdscrを更新する(直接操作することは許可されていない).で,関数refreshを呼び出すと,現在の端末の状態を保持しているcurstrとstdscrを比較して(おそらく差分などをとって)実際の端末画面を更新する.
cursesではウィンドウを作成し,操作できる.ウィンドウは少なくとも1つ存在し,複数のウィンドウやサブウィンドウを作成することもできる.サンプルを以下に示す.
このサンプルをコンパイルするにはオプション
-lncurses
が必要である.このサンプルは画面の左上に0,1,2,3,4と順番に表示して終了する.コメントにあるようにcursesを使用するときは最初に一度だけ
WINDOW *initscr(void);
を呼び出す.これに失敗するとNULLが返される.また,cursesを使用した後は最後に
int endwin(void);
を呼び出す.これに失敗するとERRが返される.サンプルではcursesを使用した処理の中心はwhileループの中である.move,printwなどでstdscrを更新し,refreshを呼び出すことで実際の画面にその変更が反映される.逆に言うといくらstdscrを更新してもrefreshしない限り画面に変化はない.refreshはコストが高いので,プログラムによってはrefreshを呼び出す頻度は十分考慮する必要がある.
matsu(C)
Since 2002
Mail to matsu