ホーム > デベロッパ > BREW プログラミング入門 > BREW で GUI プログラミング > - 2 / 2 -

BREW で GUI プログラミング - 2 / 2 -

SophiaFramework は、2002年に BREW のための GUI フレームワークとして生まれました。そこに各種ユーティリティクラス、BREW インターフェースのラッパークラスが追加され、今の姿になりました。

SophiaFramework の本質は GUI フレームワークであり、その機能は BREW 上で高機能な GUI コンポーネントを簡単に、便利に使用できることに特化されています。

SophiaFramework によるアプリ

コンポーネントの構成は前ページと同じです。

 

ソフトキーも簡単に扱うことができるほか、ダイアログも充実しています。

 

コンポーネントの配置

SophiaFramework には、アプリケーションクラスやウインドウクラスなどの概念があります。ウインドウクラスを宣言し、コンストラクタ内で、そのウインドウが持つコンポーネントの配置を行います。

    SFXWideString item[] = {
        "会議", "出張", "その他"
    };
    SInt16 height(SFXGraphics::GetFontHeight(AEE_FONT_NORMAL) + 4);
    SFXDate date(SFXDate::CurrentDate());
    SFREditboxControlPtr text;
    SFRRadiobuttonControlPtr grouper;
    SFRRadiobuttonControlPtr radio;

    //テキストコントロール
    ::new SFREditboxControl(this, SFXRectangle(10, 10 + height, 50, 28),
        SFXWideString::Format("%04d", date.GetYear()));

    //ラベル
    ::new SFRLabelControl(this, SFXRectangle(65, 13 + height, 40, 28), "年");

    //コンボボックス
    ::new SFRComboboxControl(this, SFXRectangle(60, 43 + height, 170, 25), item,
        lengthof(item));

    //ラジオボタン
    grouper = ::new SFRRadiobuttonControl(this,
        SFXRectangle(78, 145 + height, 90, 28), "高");

    //ボタン
    ::new SFRButtonControl(this, SFXRectangle(10, 200 + height, 70, 25), "作成");

    //...

配置するコンポーネントを作成するだけで、描画や基本的な動作はすべて自動的に行われます。

もちろんコンポーネントの基本的な設定についても、API が用意されています。

ダイアログの作成

ダイアログについても、パラメータを設定して作成、表示するだけで簡単に扱うことができます。

    SFRMultiDialogPtr dialog;
    SFRMultiDialog::ParamRec param;
    SFRTextMenuPtr menu;
    SFCError error(SFERR_NO_ERROR);

    param.text = "終了しますか?";
    param.ok = "はい";
    param.cancel = "キャンセル";
    param.focus = SFRMultiDialog::FOCUS_CANCEL;
    param.image = SFBShell::GetInstance()->
        LoadResImage(TEMPLATEAPP_RES_FILE, ACCEPT);
    if ((dialog = ::new SFRMultiDialog(
            SFGUIApp::CalculateDialogPosition(
                SFRMultiDialog::GetMargin(), MULTIDIALOG_HEIGHT),
            "確認", param)) != null) {
        SFGUIApp::OpenStandardDialog(dialog, HANDLER_FUNCTION(FromSoftkey1));
    }

SophiaFramework のメリット

BREW のGUI プログラミングを C で行ったときは、メモリなどのリソースの管理は特に注意しなければいけませんでした。コンポーネントの種類に応じて処理を分岐していた関数部分も、大変読みにくいものでした。

SophiaFramework を使えば、GUI コンポーネントや BREW インターフェースのリソース管理は自動的に行われます。また、ウインドウやダイアログ、コンポーネント単位でイベント処理を書くことができるので、コードがすっきりします。

前ページのプログラミングで実装した機能のほか、課題として挙げたすべての機能が SophiaFramework には備わっています。描画やキーイベントの基本的な処理などはすべて自動的に行われるので、ウインドウにコンポーネントを置くだけですぐに動いてくれるのも、大きなメリットと言えるでしょう。