****************************************** ターボC用便利ツールライブラリ ******************************************  TOOLS.LIBはPC9801でターボCを使用するときに、あると便利と思われ る関数を集めたライブラリです。個々のオブジェクトファイルを必要にあわせて使用する こともできます。  以前に紹介したTOOLにオリジナルグラフィックルーチンの追加、ウィンドウ選択時 のマウス対応、ウィンドウの枠の非表示選択、ラインエディット付きキー入力関数の追加 などの強化を図りました。 ファイルの構成は以下の通りです。コンパイルはLモデルで行ってありますので、他 のモデルの場合は、ソースから再コンパイルして下さい。 (TOOL)-------- TOOLS.DOC このファイル | TOOLS.LIB ツールズライブラリ | TOOLS.H ツールズライブラリ用ヘッダーファイル | TOOLS.LST ライブラリ用リストファイル |----- CONS98.H コンソール用ヘッダー | CONS98.C コンソール用ツール | CONS98.OBJ |----- WIND98.H ウィンドウ用ヘッダー | WIND98.C ウィンドウ用ツール | WIND98.OBJ |----- WDIR98.C ウィンドウによるファイル選択ツール | WDIR98.OBJ |----- MOUSE98.C マウス用ツール | MOUSE98.OBJ |----- LPR98.C プリンタ用ツール | LPR98.OBJ |----- RSIO98.C RS232Cツール | RSIO98.OBJ |----- GDVR98.C Gram直接アクセスグラフィックツール | GDVR98.OBJ |----- GGDC98.C GDC直接アクセスグラフィックツール | GGDC98.OBJ |----- WS.C ウィンドウデモプログラム | WS.OBJ | WS.EXE | MAKEFILE.WS WS.EXE作成用makefile |----- WD.C ファイル選択デモプログラム | WD.OBJ | WD.EXE | MAKIFILE.WD WD.EXE作成用makefile |----- GINIT.EXE グラフィック初期化プログラム  GDC直接アクセス関数を使用するときに、グラフィックの初期化が正常に行われない ことがあります。このような場合は GINIT.EXE を実行してからグラフィック関数を使用 して下さい。(グラフィック関数ではGDCそのものの初期化は行っていません)  ライブラリの各ツールの概要を紹介します。関数の詳細はソースファイルを参照して下 さい。以下の表記で、 uchar は unsigned char uint は unsigned int を表わします。 ”CON98.H” 画面表示関係のマクロおよびキースキャンコードが定義されています。 ”CONS98.C” int cgetch(void); BIOSによる1文字入力 int cinkey(void); BIOSによるキー入力チェック int inkey(void); DOSびよるキー入力チェック void txt_color(int); テキストカラーの設定 int text_mode_ck(void); 画面モードの取得 void txt_disp_on(void); テキスト画面の表示 void txt_disp_off(void); テキスト画面の非表示 void crsform(int,int,int,int); カーソル形状の設定* void strmov(char *,int,int); 同一文字列内での文字列移動* int ktype(char *,int); 文字の種類の検査* int iswap(int); 整数型の変数の上下バイトの交換* void kputch(int); 整数型の漢字を画面に出力する* int ledit(char *,char *,int,int); 行編集機能付き文字列入力(漢字対応)* ”WIND98.H” ウィンドウを使用するためのウィンドウ構造体(タイプ宣言あり)および メニューを選択するためのメニュー構造体が宣言されています。 /**** ウィンドゥ構造体定義 ****/ struct win_st{ int l,t,r,b; /* ウィンドゥ位置 */ char *np; /* ウィンドゥの名称 */ int tc,bc,nc; /* テキスト、枠、名称の色 */ char *bf; /* 退避エリア */ int lx,ly; /* 最終カーソル位置 */ struct win_st *wlast; /* 前ウィンドゥポインタ */ }; typedef struct win_st WIN; /*** メニュー構造体定義 ****/ typedef struct { int c,r,w; /* 列数、行数 、列幅*/ int hc,sc; /* ハイライトカラー、セレクトカラー */ char **str; /* 表示文字列ポインタ */ int last,st; /* 選択番号、表示オフセット */ } MENU; ”WIND98.C” void w_title(WIN *); ウィンドウのタイトルを書きます void w_disp(WIN *,int ,int ); ウィンドウを書きます void w_locate(WIN *); ウィンドウのカーソル位置の復帰 void w_crspos(WIN *); ウィンドウのカーソル位置の退避 int w_chek(WIN *,int ,int ); ポイントがウィンドウの内部か調べる WIN *w_cktop(WIN *,WIN * ); ウィンドウが上位にあるか調べる void w_cls(WIN *); ウィンドウ内の消去 void w_color(WIN *,int ); ウィンドウ内テキストカラーの指定 void w_window(WIN * ); カレントウィンドウの指定 WIN *w_open(int ,int ,int ,int ,char *,int ,int ,int ,int ); ウィンドウの新規オープン void w_close(WIN * ); ウィンドウのクローズ WIN *w_open_st(WIN * ,int ); 構造体渡しでウィンドウを新規オープン void w_corner(int); ウィンドウの隅形状の指定 int w_msgout(WIN * ,char *,int ); ウィンドウの下部メッセージの表示 void w_msgcls( WIN *wh ); ウィンドウの下部メッセージの消去 void menu_blnk( int ); ブランク文字数の設定 void menu_mode( int ); メニューモードの指定 void wm_disp(WIN *,MENU *,int ,int ); ウィンドウに選択メニューを表示する int wm_sel(WIN *,MENU *,int ); ウィンドウによるメニュー選択 (マウスドライバーが必須です) WIN *wm_open(MENU *,char **,int,int,char *,int,int,int,int); メニュー用のウィンドウを開ける int wm_set(WIN * ,MENU * ,int ,int ); 指定メニューの選択表示 int w_yesyno(int ,int ,int ,int ,int ); ウィンドウ内でのYes/No確認 int w_ok(int ,int ,int ,int ); ウィンドウ内でのOk確認 ウィンドウの中の位置の指定は gotoxy 文字の入出力は cprintf,cputs,putch,getch,getcheを使用すること cscanfも使用できますが制御コードが正しく動かないことがあります のでleditの使用をすすめます。 ”WDIR98” int getffb(FNAM *) ファイル名および属性の呼び出し int sel_fnam(WIN *,MENU *,FNAM *,FNAM **); ファイル名の選択 int wget_fnam(char *,int ,int, int, int,char *,char *,char *,int); ウィンドウによるファイル名選択 ”MOUSE98.C” int ms_init(void); マウスの初期化 int mouse(int) マウス表示のon/off int ms_get(int *,int *,int *,int *) マウス情報の取得 void ms_set(int,int); マウス位置の指定 void ms_stle(int,int,uchar *); マウス形状と中心点の指定 void ms_crs(int); 登録マウス形状の指定 void atr_inv(int , int ); テキスト属性の反転 ”LPR98.C” int lp_init(void); プリンタの初期化 void lp_kjin(); 漢字モードへ void lp_kjout(); アスキーモードへ int lputch(char); 1文字のプリンタ出力 void lputcrlf(void); CR/LFのプリンタ出力 void lpage(void); ページ送りのプリンタ出力 void lp_putch( uchar ); 1文字のプリンタ出力(改行対応) lkput( unsigned int ); 漢字1文字のプリンタ出力(シフトjisコード) int lputs(char *); 文字列のプリンタ出力 int lp_puts( char * ); 文字列のプリンタ出力(漢字対応) int lputsn(char *,int); 文字列のプリンタ出力(文字数指定) ”RSIO98.C” int com_init(uchar *,int,int); RS232Cの初期化 unsigned com_recvsize(void); 受信データサイズの取得 unsigned com_send(uchar); 1文字データ送信 unsigned com_recv(void); 1文字データ受信 unsigned com_sioout(int); 通信コマンド出力 unsigned com_sioin(void); 通信ステータスの取得 void com_flash(int); 通信バッファーの吐き出し int com_sends(char *,int); 文字列の送信 int com_resvs(char *.int); 文字列の受信 ”GGDC98.C” void gvr_start(); GDCの表示を開始する void gvr_stop(); GDCの表示を中止する void gvr_screen(int ,int ); 表示およびアクティブ画面の設定 void ptn_get(int ,uchar * ); 漢字パターンの取得 void gvr_cls(int ,int ,int ); グラフィックメモリの消去 void gvr_put(uchar * ,int ,int ); 文字列データをRGBに描画 void gvr_get(int ,int ,int ,int ,char * ); RGBデータを文字列に格納 void gvr_set(uchar *ptn, int gx, int gy, int col ); 指定色でパターンを描画 void gvr_pfill(int ,int ,int ,int ,uint ,uint ,uint ); 四辺形指定パターン塗りつぶし void gvr_bxor(int ,int ,int ,int ,int ,int ); 四辺形エリアの反転 void gvr_kput(uint ,int ,int ,int ); 漢字パターンの出力 void gvr_bfill(int ,int ,int ,int ,int ); 色指定4辺形塗りつぶし(ドット単位) void vr_mkptn(uchar *,uchar * ); ビットシフトパターンの作成 void gvr_shift(char * ,int ); ビットシフトの実行 void gvr_lset(char *,int ,int ,int ); 色指定パターン描画(ドット単位) gvr_putm(char *,char *,char *,char *,int ,int ) マスクパターン付き描画(ドット単位) auto_msk(char *,int *,int *,int * ); マスクパターンの自動作成 ”GGDC98.C” void gdc_start(); GDCの表示を開始する void gdc_stop(); GDCの表示を中止する void gdc_screen(int ,int ); 表示およびアクティブ画面の設定 void gdc_cls(); 全画面消去(GDCによる) void gdc_ltype(uint ); 描画線パターンの指定 void gdc_pset(int ,int ,int ); 点のプロット void gdc_line0(int ,int ,int ,int ,int ,int ); 描画モード指定付き直線描画 void gdc_line(int ,int ,int ,int ,int ); 直線の描画 void gdc_circle0(int ,int ,int ,int ,int ); 描画モード指定付き円描画 void gdc_circle(int ,int ,int ,int ); 円描画(はみ出し確認はしていない) void gdc_bline0(int ,int ,int ,int ,int ,int ); 描画モード指定付き四辺形描画 void gdc_bline(int ,int ,int ,int ,int ); 四辺形描画 -----------------< 以  上 >------------- H4/7/31 -----------------