WideStudio Programming (3-1)
~画面クラスの作り方-1

タンゴレンの三つの基本画面(メイン画面と情報ウィンドウ画面と検索パネル画面)は、三つともWSCmainWindowです。その他の補助的なダイアログ画面も多くはWSCmainWindowで作られています。モーダルな動作になる小さな画面にはWSCdialogを使っているものもありますが、モードレスに表示される画面は全部WSCmainWindowになっています。

ここでは、比較的コンパクトで複雑な処理も無い「お手軽ウィンドウ配置ダイアログ画面」(画像等はこちらから⇒ http://www.attocraft.jp/contents/html/products/tangoren/manual/m2920_easy_placement_dlg.html )を例に、WideStudio/MWTのウィジェットをクラスベースで使うやり方を説明します。

まず、クラスの宣言から。短いので全部載せておきます。

namespace tgrapp {
class CTGRWindowPlacementDlg;
/** 唯一のダイアログパネルへのポインタを返す */
CTGRWindowPlacementDlg* GetCTGRWPDlg();
/** お手軽ウィンドウ配置のコントロール画面クラス **/
class CTGRWindowPlacementDlg {
    class WPDImpl;
    WPDImpl* _pimpl;
    CTGRWindowPlacementDlg();
public:
    ~CTGRWindowPlacementDlg();
    void ShowDialog(bool show=true);
    void ToggleDialog();
private:
    void Delete();
    friend CTGRWindowPlacementDlg* GetCTGRWPDlg();
};
} /* namespace tgrapp */

tgrapp名前空間はグローバルネームスペースを極力汚さないためのもので、ここにはタンゴレンのアプリケーションコードが含まれます。

GetCTGRWPDlg() 関数はこのダイアログのインスタンスへのポインタを返します。このクラスはコンストラクタがprivateにされていて、friend関数でしか実体化出来ない仕掛けになっています。派生されることは想定していないので、デストラクタをvirtualにしていません。

CTGRWindowPlacementDlg クラスが、ウィンドウの本体です。が、ここには中身の実装に使われるWPDImplクラスのprivateなポインタがあるだけで、後は、デストラクタと、ダイアログの表示制御のためのShowDialog()とToggleDialog()が公開されているだけという至ってシンプルなものです。

(続く)