C++による GUI構築ツール Oxlib

OXlib++のクラス階層

独立基本クラス階層

GUI と直接は無関係なクラスで、OXlib++より使われる便利なクラスである。
もちろん、アプリケーションからの使用も自由だ。ほとんどのクラスは独立したクラスである。

  1. OXoptionC

    起動Option解析し、オブジェクトに保持する。
    オブジェクトはシステム唯一で、oxmain.cxxにsysOXが定義されている。
    デバッグメッセージ表示も含む。

  2. OXpointC

    1点の位置を表す。

  3. OXsizeC

    矩形の大きさ(幅と高)を表す。

  4. OXrectC

    位置と大きさを表す。OXpointC とOXrectC の派生クラス。
    OXlib++の中で唯一多重継承を用いている。

  5. OXstringC

    文字列そのもので、自動的にメモリ占有長さを調整する機能を持つ。

  6. OXpartsC

    部品の特性を定義する。

  7. OXresDefC

    リソースの特性を定義する。

ウィンドウ・システム・クラス階層

使用するウィンドウ・システムを記述するクラスである。
OXlib++は X-Window を前提としたシステムであるので、X-Window システムを記述するクラスの集合となっている。
ウィンドウ・クラス階層のオブジェクトはGUIクラス階層に所有される。

ウィンドウ・システム・クラス階層
ウィンドウ・システム・クラスの標準的なメンバ関数
  1. Constractor

    staticオブジェクトを可能にするため、名前メンバ変数に名前を代入するのみ。
    X11リソースメンバ変数をNOOBJにセットする。

  2. SetName()

    Free()を呼び出す。(実際にはX11リソースメンバ変数の値がNOOBJなら何もしない)
    名前メンバ変数に名前を代入する。

  3. static

    オブジェクトを可能にするため、オブジェクト生成直後は X-Server とは通信しない。

  4. GetName()

    内部メンバの変数の名前のみ返す。

  5. Create()

    X11リソースメンバ変数の値がNOOBJのときはX11リソースを実際に取得する。

  6. Free()

    X11リソースメンバ変数の値がNOOBJでないなら、X11のリソースを開放する。
    X11リソースメンバ変数をNOOBJにセットする。 Destractorからも呼び出される。

  7. GetXXXX()

    Create()を呼び出す。(実際にはX11リソースメンバ変数の値がNOOBJでないなら何もしない)
    X11のリソースの取得。例えば OXfontC::GetInfo()。

GUI部品クラス階層

OXlib++のGUIを構築するためのクラスである。

GUI部品クラス階層
GUI部品クラスの標準的なメンバ関数
  1. Make()

    X-Serverのオブジェクトを作成し取得する。

  2. Destroy()

    X-Serverのオブジェクトを開放する。

  3. GetResource(OXstringC& stResName, OXstringC& stValue)
  4. SetResource(OXstringC& stResName, OXstringC& stValue);

    すべての部品はメンバ関数旧リソースの互換性をもたせるため、文字列リソース名によるリソースのアクセス関数を実装している。
    リソース・テーブルを部品ごとに用意することにより、各部品は GetResource()と SetResource()をオーバ ーライドする必要はない。
    かなり特別な動作をさせるときのみ仮想関数を部品に記述する。

クラス・オブジェクトの関係

共通システムオブジェクトクラス

OXsysObjCの中で static object として定義されている。

  1. OXoptionC optOX オプション解析
  2. OXsysC sysOX BOXのシステム・デフォルト
    • OXpixmapC:白黒用ディザ・パターン
    • OXcolorC :白や黒の既定色
    • OXgcC :BOX描画用GC
    • OXkanjiC :漢字文字列描画用GC
ユーザ・アプリケーション・クラス
  1. OXmainC(イベント処理)
    必ず1つは必要なOXlib++メイン処理オブジェクト。
  2. GUIオブジェクト:OXbaseCの派生クラス
    • OXwinC :Window OXcolorC :各部分の色
    • OXfontC :文字列描画用フォント
    • OXcursorC:カーソル
    • その他各派生クラスが必要とするオブジェクト
    • GUIオブジェクトはGUIの構成単位BOXの数だけ必要である。
ページトップへ