[[CWCC with BORLAND C++]]
RETURN
CWCC USER'S MANUAL
はじめに
CWCCは、Cool Windows Console Class Libraryの略語です。因みに、COOLは、Chara Ozaki Objective Laboratoryの略語になっています。CWCCは、その名の通り、Windows上でのコンソールプログラム環境を提供し、その一連のプログラムの中で、Windowsの持つ、優秀なユーザインターフェイスを、積極的に取り入れ、かつ簡単に使用出来る様にする事をコンセプトに開発されました。MS-DOSのコンソールプログラムの資産を、Windowsに移植したい場合,有る程度、見た目にこだわらない事務的なツールの開発には、その力を発揮すると考えています。
INDEX
利用規約
配布パッケージ
インストール方法
プログラムの書き方
コンパイル方法
オプション機能
Cwcc関数リファレンス
Cwccクラスリファレンス
その他の機能
利用規約
以下の利用規約に同意出来ない場合は、CWCCを利用する事は出来ません。
  • ライブラリ及びソースコードは無償で配布するが、著作権について、これを放棄した訳では無いので、無断で商用ソフトウエアに流用してはならない。
  • このライブラリを利用した上で、如何なる損害,障害が発生しても、当方は、一切の責任を負わないものとする。
  • ソースコードの改版については、ユーザの自由意志に任せるものとする。但し、改版したライブラリを使用したソフトウエアについては、CWCCの名称を使ってはならない。
配布パッケージ
現在の最新版は、第2版(1.1.0)です。
FolderFilenameComment
-readme.txt簡単な説明書
bincwcc.exeコンパイラ(※)本体
CWCCLIB.PKGライブラリパッケージ
cwcclibcwcc.objCWCCライブラリ本体
cwcc.hユーザ用インクルードファイル
cwcc.rcCWCCリソースファイル
cwcc.rhCWCCリソースヘッダ
cwcc.icoCWCCデフォルトアイコン
sourcecwccc.cppCWCCコンパイラ起動ファイルソース
mk.batコンパイラ(※)ビルド用バッチ
(※)CWCCのコンパイラは、最終的に、Borland C++ Compilerのmakeコマンドを呼び出して、実行するもので、実際にコンパイルを行う機能は有りませんが、コンパイラの様に扱うことが出来ますので、便宜上、コンパイラと呼んでいます。
インストール方法
※ボーランドC++コンパイラ自体が、正しくインストールされている事を前提に、話を進めます。
推奨される、インストール方法は、以下の通りです。
  • cwcc.exe及び、CWCCLIB.PKGについては、Borland C++ Compilerの本体(BCC32.EXE)と同じフォルダにセーブします。これは、パスが通って居るという意味で、この場所を推奨していますが、必ずしも、この場所でなくても、パスの通ったフォルダであれば、動作させることが出来ると思います。
  • cwcclib以下のファイルについては、適宜プロジェクトファイルに組み込める様、ひとまとめに任意のフォルダにセーブしておいて下さい。
  • cwcc.hについては、Borland C++ Compilerのインクルードファイルのセーブされているフォルダに、cwccというフォルダを作成し、ここにセーブしておくと便利です。
プログラムの書き方
  • ヘッダファイルインクルード
    ユーザプログラムには、必ずcwcc.hをインクルードして下さい。無くてもコンパイル出来る事も有りますが、この場合、CWCCの機能は、殆ど使えなくなります。また、cwcc.hは、内部でWINDOWS.Hをインクルードしていますので、改めてWINDOWS.Hをインクルードする必要は有りません。

  • メイン関数(CwccMain)
    ユーザプログラムは、int CwccMain(char *CommLine)と言う関数に記述して下さい。引数として渡される、char *CommLineには、コマンドラインからのオプションが渡されますが、使用しない場合は、char*とだけ宣言して下さい。また、CwccMain関数の戻り値としては、現在のところ、以下の仕様となっています。

    • 0を返した場合、CwccMain終了時に、速やかにアプリ自体を終了する。
    • 1(0以外)を返した場合、CwccMainが終了しても、アプリはそのまま継続する。


  • 使える関数,書式
    使える関数及び書式は、CWCCが提供する専用関数及び専用クラス(下記参照)以外にも、ANSI-C++の規定通りであれば、ユーザ定義のクラス,ユーザ定義関数,テンプレート,広域変数等、或る程度無秩序に使う事が出来ます。但し、WindowsAPI関係の関数については、一部CWCC側で隠蔽している部分が有りますので、自由には使えない仕様になっています。

  • メッセージID番号
    ユーザダイヤログを定義する等,メッセージIDを定義する場合は、0x4900(18688)〜0x4BFF(19455)までのメッセージIDは、CWCC本体が使用(予約)していますので、避けて下さい。ウインドウが違うので、競合しても問題は無いと思いますが、念のため。
コンパイル方法
コンパイルの方法には、2通りの方法が有ります。一つは、CWCC.EXEを使用して、ユーザプログラムをコンパイルする方法,もう一つは、本来のBorland C++ Compilerにて、コンパイルを実施する方法です。分割コンパイルを実施する必要が有る場合は、普通、MAKEFILE等を作成して、後者を採るのですが、CWCC.EXEでも、別途コンパイルしたオブジェクトファイル(拡張子:OBJ)を3個までと、別途作成したリソーススクリプトファイル(拡張子:RC)を3個まで、コンパイルし、リンクする事が出来ます。後者の説明は、Borland C++ Compilerのコンパイラマニュアルに任せる(最終的に、cwcc.objをリンクして、cwcc.rcをリソースコンパイル+リンクさせれば良い)として、ここでは前者について、例を示して説明します。

  • 例として、Hello Worldを生成します。まず、以下のソースコードを書いて、hello.cppという名前で保存して下さい。
    #include <cwcc\cwcc> //←注

    int CwccMain(char *)
    {
      CwccPrint("Hello World!") ;
      return(1) ;
    }

    // 注)cwcc.hを、BC++のインクルードフォルダに登録した場合の例です
    //  登録していない場合は、#include "cwcc.h"と記述

  • 作業フォルダに、上記ファイルを保存して、MS−DOSプロンプトを起動し、CD(ChangeDirectory)コマンドを使用して、作業フォルダまで移動します。この時、作業フォルダに、cwcc.obj,cwcc.h,cwcc.rc,cwcc.rhという名前のファイル(大文字/小文字の区別無く)が有ると、コンパイル実施時に、自動的に上書きされて、コンパイル実施後に削除されてしまいますので、この様な名前のファイルが有る場合には、それらのファイルを、別フォルダに移動するなどして待避して下さい。

  • MS−DOSプロンプトから、以下の様にタイプして、コンパイルを実施して下さい。
    Work>cwcc hello[CR]
    この時、hello.cppの拡張子は、cwcc hello.cppの様にタイプしても、しなくても良い仕様となっています。拡張子が無ければ、自動で.cppが付加されます。エラー無く終了すれば、作業フォルダにhello.exeが生成されていると思います。
    (実行すると、Windowが1枚開き、Hello World!が表示される筈です)
オプション機能
基本的なコンパイル方法については、以上の通りですが、幾つかのオプションが定義されていますので、以下に紹介しておきます。

  • アイコンを変えたい場合,
    自分で作成したアイコンを作業フォルダに、cwcc.icoという名前で保存しておくと、このファイルは上書きされませんので、アイコンを変更する事が出来ます。

  • バージョンを表示する,
    Work>cwcc -V[CR]
    の様にタイプすると、コンパイラのバージョン及び、格納されているライブラリのバージョンを表示する事が出来ます。

  • 簡易分割コンパイル,
    どうしても分割コンパイルになってしまうけど、makefileを造るのも面倒という場合には、簡易分割コンパイルを使用する事が出来ます。
    予め、メインプログラム以外に分割したソース(例えば、hellosub.cpp)を、コンパイルして、オブジェクトファイルを生成しておき、これを、-Oオプションを付加して、以下の様にタイプします。
    Work>cwcc hello -Ohellosub.obj[CR]
    これで、最終的な実行ファイルコンパイル時に、hellosub.objが、一緒にリンクされる様になります。このオプションについては、一度のコンパイルで、最大3個まで、指定する事が出来ます。

  • ユーザリソースのリンク,
    ユーザダイヤログの機能等を使用する際、ユーザ定義のリソースファイルを別途用意する場合は、最終的に、そのリソーススクリプトファイルも、コンパイルしてリンクさせる必要が生じますので、-Rオプションにて指定して、以下の様にタイプします。
    Work>cwcc hello -Ruser.rc[CR]
    これで、基本リソースのリンク後に、user.rcが、コンパイルされてリンクされる様になります。このオプションについても、一度のコンパイルで、最大3個まで、指定する事が出来ます。但し、ここで指定できるのは、リソーススクリプトファイルのみで、リソースをコンパイルした、リソースオブジェクトは指定出来ません。
Cwcc関数リファレンス
  • void CwccPrintf(char *format,...) ;
    引数char *formatフォーマット文字列
    ...可変引数リスト
    戻り値void戻り値は有りません
    機能 コンソールへ、フォーマット文字列を出力する

  • void CwccPrint(char *string) ;
    引数char *string表示させる文字列
    戻り値void戻り値は有りません
    機能 コンソールへ、指定した文字列を出力する

  • void CwccCls(void) ;
    引数void引数は有りません
    戻り値void戻り値は有りません
    機能コンソールのクリア

  • void CwccGets(char *guidance,char *getbuff) ;
    引数char *guidanceガイダンス文字列
    char *getbuff文字列取得用バッファ
    戻り値void戻り値は有りません
    機能 ダイヤログボックスを表示して、文字列を取得する。guidanceに指定したガイダンスがダイヤログに表示され、取得した文字列は、getbuffに返される。

  • void CwccMessage(char *message) ;
    引数char *messageメッセージ文字列
    戻り値void戻り値は有りません
    機能 メッセージボックスを使用して、messageの文字列を表示する

  • int CwccYesNo(char *question) ;
    引数char *question質問文字列
    戻り値int回答を通知
    機能 メッセージボックスを使用して、questionの文字列にて質問を表示する。YESを押下された場合は1を返し、NO若しくはキャンセルされた場合は、0を返す

  • int CwccGetcb(void) ;
    引数void引数はありません
    戻り値intキー押下コード
    機能 ダミーのダイヤログボックスを表示して、キー押下を待つ。戻り値は、キーコードとして返される。入力が有るまで、メインプログラムの実行は一時停止状態となる。

  • int CwccGetch(void) ;
    引数void引数は有りません
    戻り値intキャラクタコード
    機能 コンソールにて、入力を待つ。入力されたコードは、キャラクタコードにて返される。(注:漢字コードは2バイト同時に返される)入力が有るまで、メインプログラムの実行は一時停止状態となる。

  • int CwccGetchar(void) ;
    引数void引数は有りません
    戻り値intキャラクタコード
    機能 コンソールにて、入力を待つ。入力されたコードは、キャラクタコードにて返されるのと同時に、コンソール上にも表示される。(注:漢字コードは2バイト同時に返される)入力が有るまで、メインプログラムの実行は一時停止状態となる。

  • void CwccGetStr(char *getbuff) ;
    引数char *getbuff文字列取得用バッファ
    戻り値void戻り値は有りません
    機能 コンソールにて、文字列の入力を待つ。改行コード入力されるまでを文字列としてgetbuffに取得する。入力が終わるまで、メインプログラムの実行は一時停止状態となる。

  • void CwccEditor(char *guidance,
         char *getbuff,int strlength) ;

    引数char *guidanceガイダンス文字列
    char *getbuff文字列取得用バッファ
    int strlength取得文字長
    戻り値void戻り値は有りません
    機能 エディットコントロールボックスを備えたダイヤログを表示し、複数行の文字列の編集する。編集結果を、最大長strlength文字で、getbuffに取得する。入力が終わるまで、メインプログラムの実行は一時停止状態となる。

  • void CwccPutch(int character) ;
    引数int character文字コード
    戻り値void戻り値は有りません
    機能 コンソールに、文字コード(character)を表示させる。漢字コードは、1文字として送信する必要がある。表示可/不可の判定は行っていないので、表示させるコードについては、ユーザが管理しなければならない。出力が完了するまで、メインプログラムの実行は、一時停止状態となる。

  • unsigned CwccKeySense(int on_off_sw) ;
    引数int on_off_swキーセンスON/OFF
    戻り値unsigned文字コード
    機能 コンソールにて、現在キーが押下されているかをセンスする。デフォルトで、キーセンスはOFFになっているので、ON=1を指定して、センスをスタートする。キーセンスON中は、最近(最後に)押されたキーの文字コードを返すが、押されていなければ0が返る。センスが不要になったら、キーセンスをOFFにしておく事を推奨する。この関数実行時は、入力の有無に関わらず、メインプログラムの実行は停止しない。

  • void CwccAddSelectItem(char *select_item) ;
    引数char *select_item選択肢の登録文字列
    戻り値void戻り値は有りません
    機能 CwccSelectにて選択肢として選択する項目をセットする。セット出来るのは、最大で、128項目であり、個々の最大文字長は、63バイトまで(NULLを含めて64バイト)とする。一旦、CwccSelectを実施すると、選択肢の内容はクリアされる。

  • int CwccSelect(char *guidance,int def_numb,char *getbuff) ;
    引数char *guidanceガイダンス文字列
    int def_numb選択番号初期値
    char *getbuff文字列取得用バッファ
    戻り値int選択番号
    機能 コンボボックスを備えたダイヤログを表示し、選択肢の選択を行う。選択肢は、予め、CwccAddSelectItem関数にて、順に登録されていなければならない。選択または編集結果を、getbuffに取得し、選択された番号を返す。番号が−1の場合は、ユーザによる入力,−2の場合は、キャンセルされた事を示す。選択が終わるまで、メインプログラムの実行は一時停止状態となる。終了時点で、選択肢はクリアされる。

  • void CwccUserDialog(char *DlgName,DLGPROC UDlgProc) ;
    引数char *DlgNameダイヤログ名
    DLGPROC UDlgProcダイヤログプロシージャ
    戻り値void戻り値は有りません
    機能 ユーザダイヤログ関数。ユーザが、リソースエディタ等で作成したダイヤログボックスを、ユーザインタフェースとして使用出来るインタフェース,但し、ダイヤログ・プロシージャは、ユーザ管理とし、モーダルダイヤログとして動作する。ダイヤログが閉じるまで、メインプログラムの実行は一時停止状態となる。

  • void CwccCursor(int on_off_sw) ;
    引数int on_off_swカーソルON/OFF指定
    戻り値void戻り値は有りません
    機能 CwccGetch,CwccGetchar,CwccGetStrの実行時、コンソールに、カーソルを表示する/しないを選択する。デフォルトは、ON=1となっているが、必要に応じてOFF=0をセット出来る。

  • void CwccHelpMessage(char *help_message) ;
    引数char *help_messageヘルプメッセージ
    戻り値void戻り値は有りません
    機能 ユーザヘルプメッセージを登録する。これによって登録が為されると、以降、メニューの、[Help]→[about..ThisApp]によって、自分のアプリの説明が表示される。最大で、255byteまで(NULLを含めて256バイト)のメッセージが登録出来る。
Cwccクラスリファレンス
CWCCがユーザ用に提供するクラスインタフェースと、メンバ関数を紹介します。
※特別必要の無いと判断したものについては、コンストラクタ/デストラクタの説明は省略しています。
  • class CwccTimer
    タイマ:最大3本までのタイマ起動が可能
    • BOOL Start(int timer_numb,UINT timeup,BOOL oneshot) ;
    • BOOL Stop(int timer_numb) ;
    • BOOL TimerState(int timer_numb) ;
    • virtual int UserStart(int) ;
    • virtual void TimerFunction(int) ;
    • virtual BOOL Watch(int) ;


  • class CwccFile
    ファイル:ファイルダイヤログ及び入出力を使うクラス
    • void ClearFname(void) ;
    • BOOL RegistFname(char *) ;
    • BOOL FOpenDlg(char *,LPCTSTR) ;
    • BOOL FSaveDlg(char *,LPCTSTR) ;
    • BOOL GetFname(char *) ;
    • BOOL Open(int) ;
    • BOOL OpenFile(char *,int) ;
    • BOOL Close(void) ;
    • int Getc(void) ;
    • BOOL Putc(int) ;
    • BOOL GetStringnoLF(char *,int) ;
    • BOOL GetString(char *,int) ;
    • BOOL PutString(char *) ;
    • long FileSize(void) ;
    • long FilePos(void) ;
    • BOOL SetFilePos(long) ;


  • class CwccProfile
    プライベートプロファイル:プロファイルの入出力を行うクラス
    • CwccProfile(char *) ;
    • ~CwccProfile() ;
    • BOOL WriteSentence(char *,char *,char *) ;
    • BOOL WriteValue(char *,char *,int) ;
    • UINT GetValue(char *,char *) ;
    • void SetDefaultIntValue(int) ;
    • DWORD GetString(char *,char *,char *) ;
    • void SetDefaultString(char *) ;
    • void SetDefaultStringLength(int) ;


  • class CwccSerial
    シリアル:シリアルポートの入出力クラス
    • HANDLE OpenCommDevice(const char *) ;
    • int InitCommPort(DWORD,DWORD,DWORD) ;
    • int SetCommPort(UINT,BYTE,int,int,BOOL,BOOL) ;
    • BOOL DefaultSetting(int,UINT,BYTE,int,int,BOOL,BOOL) ;
    • long NEAR RecieveLength(void) ;
    • void NEAR RSInPort(int,unsigned char *) ;
    • void NEAR RSOutPort(int,unsigned char *) ;
    • void BuffClear(void) ;
    • void StopComm(void) ;


  • class CwccCanvas
    グラフィック:グラフィックキャンバスを提供するクラス
    • HWND CreateGCV(void) ;
    • BOOL OpenCanvas(char *,int,int) ;
    • BOOL CloseCanvas(void) ;
    • BOOL Update(void) ;
    • virtual void OnPaintGC(HDC) ;
    • BOOL ClearScreen(void) ;
    • HDC GetGCDC(void) ;
    • void RePaint(void) ;
    • void DrawLine(int,int,int,int) ;
その他の機能
以上の他に、CWCCが備えている機能を紹介します。
  • Pause/Restart機能
    ユーザプログラムの暴走等により、処理が止まってしまった場合に、メインウインドウのメニューにより、ユーザプログラムの一時停止,再開をコントロールする事が出来ます。メニューの
    [Program]→[Pause]の実行にて、一時停止
    [Program]→[Restart]の実行にて、再開
    を行う事が出来ます。

  • コンソールエディット機能
    プログラムの実行が終了した後、メニューの[Screen]→[Edit]が有効になります。実行中は、フォーカスを当てる事が禁止されているので、編集は出来ませんが、編集を可能にする事により、コンソールは、ただのエディットコントロールに変身します。表示データのコピー,コメントの書き込み等が可能になりますので、必要に応じて使用して下さい。

  • CWCCバージョン表示
    [Help]→[AboutCWCC]を実行する事により、使われているCWCCのバージョンを確認する事が出来ます。
2002/05/22
HomeSweetHome2
Ozzy's Software