使用法

Unit1.cppをエディタで書き換えて別の名前でセーブして下さい。
「簡易版」Win32アプリケーション作成ビルダー(?)で Unit1.cppを書き換えて
セーブすることもできます。

Cygwinの g++と Inprise社の C++Builderに付属の bcc32で動作を確認してい
ます。user32.dllと gdi32.dllをリンクするようにすれば、どの C++コンパイ
ラでも動作するはずです。


コンパイルの方法

作成したファイルを MyUnit.cppという名前でセーブしたとして説明します。 コンパイルコマンドは Cygwin GCCの場合: g++ MyUnit.cpp -mwindows BCC32の場合: bcc32 -W MyUnit.cpp です。(「簡易版」なので分割コンパイルは使わずに WinTmpl.cppは MyUnit.cppからインクルードしています。)または、以下のコンパイラオ プションを使うと標準入出力を切り離さないので、デバッグのとき便利です。 Cygwin GCCの場合: bcc32 MyUnit.cpp -luser32 -lgdi32 BCC32の場合: g++ MyUnit.cpp -luser32 -lgdi32

使用できる関数・メソッド

関数・メソッドは、Borland C++Builderの関数・メソッドと同じ形式で使える ようにしています。ただし、グラフィックスと簡単なダイアログによるユーザ・ インターフェースのみです。具体的には以下の関数・メソッドを提供していま す。 実際の使用例は Ex1.cpp, Ex2.cpp, Ex3.cppなどを見てください。 関数: AnsiString InputBox(AnsiString title, AnsiString message, AnsiString init); void ShowMessage(AnsiString message); TRect Rect(int ALeft, int ATop, int ARight, int ABottom); POINT Point(int x, int y); TFormのプロパティ: TColor Color; int Width, Height; TCanvas* Canvas; TTimer* Timer; HWND Handle; TFormのメソッド: void Close(); void Repaint(); TForm(); void FormCreate(TObject* sender); void FormPaint(TObject* sender); void FormKeyDown(TObject* sender, WORD key, TShiftState shift); void FormMouseDown(TObject* sender, TMouseButton which, TShiftState shift, int x, int y); void TimerTimer(TObject* sender); 大抵のプログラムは TFormのメソッドのうち TForm以下の 6つのメソッド(特 に FormPaint())を書き換えて作成します。 TFontのプロパティ: TColor Color; int Size; TFontStyles Style; HFONT Handle; TPenのプロパティ: TColor Color; TPenStyle Style; TPenMode Mode; int Width; HPEN Handle; TBrushのプロパティ: TColor Color; TBrushStyle Style; HBRUSH Handle; TCanvasのプロパティ: TFont* Font; TPen* Pen; TBrush* Brush; HDC Handle; TCanvasのメソッド: void TextOut(int x, int y, AnsiString str); void LineTo(int x, int y); void MoveTo(int x, int y); void Rectangle(int x1, int y1, int x2, int y2); void FrameRect(TRect rect); void FillRect(TRect rect); void Ellipse(int x1, int y1, int x2, int y2); void Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); void Chord(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); void Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); void Polyline(const POINT *Points, const int n); void Polygon(const POINT *Points, const int n); void RoundRect(int x1, int y1, int x2, int y2, int x3, int y3); void PolyBezier(const POINT *Points, const int n); void PolyBezierTo(const POINT *Points, const int n);

C++Builderの関数との主な違い

C++Builderとの主な違いは以下のとおりです。 ウインドウの大きさ・色は TFormのプロパティ Width, Height及び Colorで設定します。Width, Height及び Colorは TForm()の中で変更しま す。以降はこれらのプロパティを変更しても何も起こりません。 Timerは通常 FormCreate(TObject*)の中から設定します。Timerのメソッド は以下の通りです。 void SetInterval(UINT i); // タイマが起動する間隔を設定する。 UINT GetInterval(); void SetEnabled(bool b); // SetEnabled(true)でタイマ設定 bool GetEnabled(); TShiftState, TFontStyles型は C++Builderの Set型ではなく 通常の int 型で実装されています。特定の要素が含まれているかどうかは、Contains メソッドではなく、&演算子を使って調べて下さい。 TObject*型の引数には何も入っていない(NULL)ので、使用しないで下さ い。 FormKeyDownの引数には WORD&型ではなく WORD型を使っています。 (書き換えても何も起らないので、参照型にしていません。)
香川考司 (kagawa@eng.?????)