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(); }