OXlib++のクラス階層
独立基本クラス階層
GUI と直接は無関係なクラスで、OXlib++より使われる便利なクラスである。
もちろん、アプリケーションからの使用も自由だ。ほとんどのクラスは独立したクラスである。
-
OXoptionC
起動Option解析し、オブジェクトに保持する。
オブジェクトはシステム唯一で、oxmain.cxxにsysOXが定義されている。
デバッグメッセージ表示も含む。 -
OXpointC
1点の位置を表す。
-
OXsizeC
矩形の大きさ(幅と高)を表す。
-
OXrectC
位置と大きさを表す。OXpointC とOXrectC の派生クラス。
OXlib++の中で唯一多重継承を用いている。 -
OXstringC
文字列そのもので、自動的にメモリ占有長さを調整する機能を持つ。
-
OXpartsC
部品の特性を定義する。
-
OXresDefC
リソースの特性を定義する。
ウィンドウ・システム・クラス階層
使用するウィンドウ・システムを記述するクラスである。
OXlib++は X-Window を前提としたシステムであるので、X-Window システムを記述するクラスの集合となっている。
ウィンドウ・クラス階層のオブジェクトはGUIクラス階層に所有される。

ウィンドウ・システム・クラスの標準的なメンバ関数
-
Constractor
staticオブジェクトを可能にするため、名前メンバ変数に名前を代入するのみ。
X11リソースメンバ変数をNOOBJにセットする。 -
SetName()
Free()を呼び出す。(実際にはX11リソースメンバ変数の値がNOOBJなら何もしない)
名前メンバ変数に名前を代入する。 -
static
オブジェクトを可能にするため、オブジェクト生成直後は X-Server とは通信しない。
-
GetName()
内部メンバの変数の名前のみ返す。
-
Create()
X11リソースメンバ変数の値がNOOBJのときはX11リソースを実際に取得する。
-
Free()
X11リソースメンバ変数の値がNOOBJでないなら、X11のリソースを開放する。
X11リソースメンバ変数をNOOBJにセットする。 Destractorからも呼び出される。 -
GetXXXX()
Create()を呼び出す。(実際にはX11リソースメンバ変数の値がNOOBJでないなら何もしない)
X11のリソースの取得。例えば OXfontC::GetInfo()。
GUI部品クラス階層
OXlib++のGUIを構築するためのクラスである。

GUI部品クラスの標準的なメンバ関数
-
Make()
X-Serverのオブジェクトを作成し取得する。
-
Destroy()
X-Serverのオブジェクトを開放する。
-
GetResource(OXstringC& stResName, OXstringC& stValue)
-
SetResource(OXstringC& stResName, OXstringC& stValue);
すべての部品はメンバ関数旧リソースの互換性をもたせるため、文字列リソース名によるリソースのアクセス関数を実装している。
リソース・テーブルを部品ごとに用意することにより、各部品は GetResource()と SetResource()をオーバ ーライドする必要はない。
かなり特別な動作をさせるときのみ仮想関数を部品に記述する。
クラス・オブジェクトの関係
共通システムオブジェクトクラス
OXsysObjCの中で static object として定義されている。
-
OXoptionC optOX オプション解析
-
OXsysC sysOX BOXのシステム・デフォルト
- OXpixmapC:白黒用ディザ・パターン
- OXcolorC :白や黒の既定色
- OXgcC :BOX描画用GC
- OXkanjiC :漢字文字列描画用GC
ユーザ・アプリケーション・クラス
-
OXmainC(イベント処理) 必ず1つは必要なOXlib++メイン処理オブジェクト。
-
GUIオブジェクト:OXbaseCの派生クラス
- OXwinC :Window OXcolorC :各部分の色
- OXfontC :文字列描画用フォント
- OXcursorC:カーソル
- その他各派生クラスが必要とするオブジェクト
- GUIオブジェクトはGUIの構成単位BOXの数だけ必要である。