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 には備わっています。描画やキーイベントの基本的な処理などはすべて自動的に行われるので、ウインドウにコンポーネントを置くだけですぐに動いてくれるのも、大きなメリットと言えるでしょう。
- SophiaFramework リファレンス : SophiaFramework 入門、使い方、クラスリファレンスなど SophiaFramework のマニュアルです。
- SophiaFramework チュートリアル : SophiaFramework を使用して作られたアプリを見ながら、プログラミングの仕方を学ぶことができます。
記事掲載プログラムのソースコード
SophiaFramework UNIVERSE を使用して作成したソースコード
sfyguiapp.zip (SophiaFramework UNIVERSE 5.1)