pdcurses.DevPakの使い方


pdcursesは、ウインドウ管理機能を持った強力なキャラクタ端末制御ライブラリncursesのパブリックドメイン版だ。
 

pdcurses.DevPakには、アプリケーションの骨格となるプログラムがついている。

"ファイル->新規->新規プロジェクト"でOthersのpdcursesを選び
名前にcuses_testとかいてCprojectにチェックしよう。
devcpp mingw DevPak 使い方 1

OKを押すとcurses_testというプロジェクトができてmain.cというソースが作成されているはずだ。

このプログラムは"実行ー>コンパイル&実行"で実行させることができる。
devcpp mingw DevPak 使い方 2
黒い画面が出て押したキーボードの名前が表示されるF10で終了だ。
 

cursesの使い方については"参考HP"や"参考文献"を参照してほしい。

ncursesの関数について調べるは参考HPで感じをつかんだあと
"curses (コマンド名)"で検索したりcygwinやLinuxのmanコマンドで確認したりするとよい。
curses.hで定義を確認するのもよい方法だ。
 

最後に自動生成されたmain.cを解説しておこう

(0)最初にcurses.hをインクルードしておく
(1)初期化手順
 initscr ();                  //ライブラリの初期化
 cbreak ();                  //リターンをおさなくても入力がプログラムに渡される、DEL や BS を無視
 noecho ();                 //キーボードエコーOFF
 start_color ();            //色使用の初期化
 keypad (stdscr, TRUE);// ファンクションキーを使えるようにする
 curs_set(0);               //カーソルの見え方 0-表示 1-通常 2-強調
(2)終了手順
 erase ();                      //端末画面の消去
 refresh ();                    //スクリーンの描画
 endwin ();                     //ライブラリ使用後の処理
(3)使用してる関数
bool has_colors ()                  端末に色表示能力があるかどうか
int init_pair(short pair, short f,short b); カラー・ペアの初期化
COLOR_PAIR( n)  //色属性を返す
int attron(int attrs); 指定された属性をONにする。
int mvaddstr(int y,int x,char *str)    カーソルを(x,y)に移動し文字列を書き込む
int mvprintw(int y, int x, char *fmt [, arg]...); カーソルを(x,y)に移動し書式付きで書き込む
 
 
 
 

(自動生成されるmain.c)
/*
 Based on: http://www.linux.cz/noviny/1998-1112/clanek11.html
*/
#include <curses.h>
#include <ctype.h>

#define COLOR1 1  /* barvicka 1. */
#define COLOR2 2  /* barvicka 2. */

int main () {
 int c;
 char *s;

 initscr ();
 cbreak ();
 noecho ();
 start_color ();
 keypad (stdscr, TRUE);
 curs_set(0);

 if (!has_colors ()) {
     endwin ();
     fputs ("No colors!", stderr);
     exit (1);
 }

 init_pair (COLOR1, COLOR_RED,  COLOR_BLUE);
 init_pair (COLOR2, COLOR_YELLOW, COLOR_BLACK);

 attron (COLOR_PAIR( COLOR1 ));
 mvaddstr (2, 5, "Red on blue.");

 attron (COLOR_PAIR( COLOR2 ));
 mvaddstr (3, 5, "Yellow on black.");

 mvaddstr (LINES-1, COLS-20, "Press F10 for end.");

 while ( (c=getch()) != KEY_F(10)) {
  s = (char *) keyname(c);
  if (s)
   mvprintw (10, 20, "'%s'", s);
  else
   mvprintw (10, 20, "'%c'", (isprint(c) ? c : '.'));
 }

 erase ();
 refresh ();
 endwin ();
 exit (0);
}
 

<参考HP>
"curses ライブラリによる画面制御"

<参考文献>
"Linuxプログラミング 例題で学ぶUNIXプログラミング環境のすべて",Neil Matthew & Richard Stones,葛西重夫訳,1999,ソフトバング
 



このHPの内容について問題があればsけいし(skeishi@yahoo.co.jp)まで連絡ください。
DevCPPの使い方に戻る
sけいし発HPに戻る
inserted by FC2 system