使用法
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.?????)