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 を使用して作成したソースコード

SFGUIApp41.zip (SophiaFramework 4.1)

















