ファイヤープロジェクト
cursesの基本的な関数
2003-07-20T15:13+09:00   matsu
cursesの多くの関数のうち,基本的なものを紹介する.
cursesには沢山の関数がある.ここではそのうちの以下の機能を使ってみる.
  • カーソルの移動
  • 文字出力
  • 文字の削除
  • 画面のクリア
カーソルの移動には
int move(int y, int x);
を使用する.左上が0,0となる.そして縦にy,横にxが増加していく.また,ウィンドウが複数になると,ウィンドウを指定してそのウィンドウのカーソルを移動させることができる.
int wmove(WINDOW *win, int y, int x);
複数のウィンドウの扱いについては別項に記述する.
文字を出力する関数はいろいろある.最も基本的なものとして以下がある.
int printw(char *fmt [, arg] ...);
cursesにおけるprintf.
int addch(chtype ch);
現在のカーソル位置で文字を上書きする.この結果,カーソルは一つ進む.
int insch(chtype ch);
現在のカーソル位置に文字を挿入する.現在のカーソルより右側にある文字は全て右に一つずつずれる.
printwの更に高機能なものとして以下がある.
int mvprintw(int y, int x, char *fmt [, arg] ...);
カーソルを移動してprintwする.
int mvwprintw(WINDOW *win, int y, int x, char *fmt [, arg] ...);
ウィンドウを指定し,カーソルを移動してprintwする.
addchの更に高機能なものとして以下がある.
int waddch(WINDOW *win, chtype ch);
ウィンドウを指定して文字を出力する.
int mvaddch(int y, int x, chtype ch);
カーソルを移動して文字を出力する.
int mvwaddch(WINDOW *win, int y, int x, chtype ch);
ウィンドウを指定し,カーソルを移動して文字を出力する.
int echochar(chtype ch);
addchしたあとrefreshする.
int wechochar(WINDOW *win, chtype ch);
waddchしたあとwrefreshする.
inschには更に高機能なものとして以下がある.
int winsch(WINDOW *win, chtype ch);
ウィンドウを指定して文字を挿入する.
int mvinsch(int y, int x, chtype ch);
カーソルを移動して文字を挿入する.
int mvwinsch(WINDOW *win, int y, int x, chtype ch);
ウィンドウを指定し,カーソルを移動して文字を挿入する.
以上のように最初の三つの関数名にwとかmvが付加されてどんどん高機能になっていく.wが付加されるとウィンドウを指定でき,mvが付加されるとカーソルを移動できる.
文字の削除には以下の関数がある.
int delch(void);
カーソル位置の文字を削除する.
int wdelch(WINDOW *win);
ウィンドウを指定してdelch.
int mvdelch(int y, int x);
カーソルを移動してその文字を削除.
int mvwdelch(WINDOW *win, int y, int x);
ウィンドウを指定してmvdelch.
画面をクリアして0からやりなおしたいこともある.画面のクリアには以下の関数がある.
int erase(void);
画面の全ての位置にスペースを出力する.
int werase(WINDOW *win);
ウィンドウを指定してeraseする.
int clear(void);
画面をクリアする.大抵端末コマンドを呼び出すのでeraseより確実らしい.
int wclear(WINDOW *win);
ウィンドウを指定してclearする.
int clrtobot(void);
カーソルの位置以降の画面をクリアする.
int wclrtobot(WINDOW *win);
ウィンドウを指定してclrtobotする.
int clrtoeol(void);
カーソルの位置以降の行をクリアする.
int wclrtoeol(WINDOW *win);
ウィンドウを指定してclrtoeolする.
上記の関数のうち,いくつかを使用したサンプルを作ってみた.まず,以下はmvaddchとclearを使用するサンプルである.
このサンプルは'*'をウィンドウに表示していく.ウィンドウの端にいくとバウンドする.LINESとCOLSという変数を使用している.両者はinitscrで画面の行数と列数に設定される.また,STAR_COUNT個の'*'を表示すると画面をclearする.以上を引数回数繰り返す.
二つ目のサンプルはdelchを使用するサンプルである.
このサンプルは引数の文字列が左から登場して右端まで移動し,また左まで移動してそのまま消えて行く.
matsu(C)
Since 2002
Mail to matsu