CWCC USER'S MANUAL
|
---|
|
はじめに
|
---|
CWCCは、Cool Windows Console Class Libraryの略語です。因みに、COOLは、Chara Ozaki Objective Laboratoryの略語になっています。CWCCは、その名の通り、Windows上でのコンソールプログラム環境を提供し、その一連のプログラムの中で、Windowsの持つ、優秀なユーザインターフェイスを、積極的に取り入れ、かつ簡単に使用出来る様にする事をコンセプトに開発されました。MS-DOSのコンソールプログラムの資産を、Windowsに移植したい場合,有る程度、見た目にこだわらない事務的なツールの開発には、その力を発揮すると考えています。
|
INDEX
|
---|
|
---|
利用規約
|
---|
以下の利用規約に同意出来ない場合は、CWCCを利用する事は出来ません。
- ライブラリ及びソースコードは無償で配布するが、著作権について、これを放棄した訳では無いので、無断で商用ソフトウエアに流用してはならない。
- このライブラリを利用した上で、如何なる損害,障害が発生しても、当方は、一切の責任を負わないものとする。
- ソースコードの改版については、ユーザの自由意志に任せるものとする。但し、改版したライブラリを使用したソフトウエアについては、CWCCの名称を使ってはならない。
|
配布パッケージ
|
---|
現在の最新版は、第2版(1.1.0)です。
Folder | Filename | Comment
|
---|
- | readme.txt | 簡単な説明書
| bin | cwcc.exe | コンパイラ(※)本体
| CWCCLIB.PKG | ライブラリパッケージ
| cwcclib | cwcc.obj | CWCCライブラリ本体
| cwcc.h | ユーザ用インクルードファイル
| cwcc.rc | CWCCリソースファイル
| cwcc.rh | CWCCリソースヘッダ
| cwcc.ico | CWCCデフォルトアイコン
| source | cwccc.cpp | CWCCコンパイラ起動ファイルソース
| 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プロンプトから、以下の様にタイプして、コンパイルを実施して下さい。
この時、hello.cppの拡張子は、cwcc hello.cppの様にタイプしても、しなくても良い仕様となっています。拡張子が無ければ、自動で.cppが付加されます。エラー無く終了すれば、作業フォルダにhello.exeが生成されていると思います。
(実行すると、Windowが1枚開き、Hello World!が表示される筈です)
|
オプション機能
|
---|
基本的なコンパイル方法については、以上の通りですが、幾つかのオプションが定義されていますので、以下に紹介しておきます。
- アイコンを変えたい場合,
自分で作成したアイコンを作業フォルダに、cwcc.icoという名前で保存しておくと、このファイルは上書きされませんので、アイコンを変更する事が出来ます。
- バージョンを表示する,
の様にタイプすると、コンパイラのバージョン及び、格納されているライブラリのバージョンを表示する事が出来ます。
- 簡易分割コンパイル,
どうしても分割コンパイルになってしまうけど、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
| |