initsrc()によって、stdscrというスクリーンが確保されます。これは、端末のサイズと一致するウィンドウです。 また、グローバル変数LINESとCOLSに、端末の大きさがセットされます。 move()などウィンドウの指定のないものは、スクリーンに対して操作されます。 move()など座標の指定がx,y逆ですが、row(行),column(列)の並びだと思えばいいと思います。
関数名 | 意味 |
---|---|
WINDOW *initsrc(void) | ライブラリの初期化(スクリーンの作成) |
int endwin(void) | ライブラリの使用後の後処理 |
WINDOW *newwin(int line,int cols,int begin_y,init begin_x) | ウィンドウの作成 |
WINDOW *subwin(WINDOW *win,int line,int cols,int begin_y,int begin_x) | サブウィンドウの作成 |
WINDOW *delwin(WINDOW *win) | ウィンドウの削除 |
int box(WINDOW *win,char vc,char hc) | ウィンドウの周囲を文字で囲む |
int refresh(void) | スクリーンの描画 |
int wrefresh(WINDOW *win) | ウィンドウの描画 |
int clear(void) | クリアする |
int wclear(WINDOW *win) | |
int move(int y,int x) | カーソルを(x,y)に移動 |
int wmove(WINDOW *win,int y,int x) | |
int addch(char ch) | 文字を書き込む |
int waddch(WINDOW *win,char ch) | |
int addstr(char *str) | 文字列を書き込む |
int waddstr(WINDOW *win,char *str) | |
int mvaddch(int y,int x,char ch) | カーソルを(x,y)に移動し、文字を書き込む |
int mvwaddch(WINDOW *win,int y,int x,char ch) | |
int mvaddstr(int y,int x,char *str) | カーソルを(x,y)に移動し、文字列を書き込む |
int mvwaddstr(WINDOW *win,int y,int x,char *str) | |
int addch() | カーソルの位置の文字を消す |
int waddch(WINDOW *win) | |
int clrtoeol() | カーソルの位置から行末まで消す |
int wclrtoeol(WINDOW *win) | |
int printw(char *fmt,...) | 書式付で文字列を挿入 |
int wprintw(WINDOW *win,char *fmt,...) | |
int getch(void) | 文字が1文字入力されるのを待ちその文字を返す |
int wgetch(WINDOW *win) | |
int getstr(char *str) | 文字列を入力する |
int getstr(WINDOW *win,char *str) | |
int scanw(char *fmt,...) | 書式付で文字列を入力する |
int wscanw(WINDOW *win char *fmt,...) | |
int inch(void) | カーソル位置の文字を返す |
int winch(WINDOW *win) | |
int getyx(WINDOW *win,int y,int x) | カーソルの位置を返す |
int echo(void) | 入力 キーボードエコーのON/OFF |
int noecho(void) | |
int cbreak(void) | バッファリングのON/OFF |
int nocbreak(void) |
/* curses サンプルプログラム */ #includevoid main() { WINDOW *win; char c; /* 初期化 */ initscr(); /* エコー/バッファリング禁止 */ noecho(); cbreak(); /* ウィンドウ作成 */ win = newwin(LINES,COLS-1,0,0); box(win,'|','-'); /* メッセージ描画 */ mvwaddstr(win,1,3,"SAMPLE PROGRAM"); mvwaddstr(win,3,3," CODE :"); mvwaddstr(win,5,3," HITKEY:"); mvwaddstr(win,7,3," END:ESC"); wrefresh(win); while((c = wgetch(win)) != 0x1b){ char buff[36]; sprintf(buff,"%02X",c); mvwaddstr(win,3,14,buff); mvwaddch(win,5,14,c); wrefresh(win); } /* 後処理 */ wclear(win); wrefresh(win); endwin(); }