前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

10.7. メニュー

メニュー処理のレスポンダは 4 種類提供されます。

表 10.10. メニューの種類

クラス名 解説
SFRPlainMenu タイトルやフレームのないなメニューを表すレスポンダです。
SFRFrameMenu フレーム付きのメニューを表すレスポンダです。
SFRTitleMenu タイトル付きのメニューを表すレスポンダです。
SFRTextMenu テキストメニューを表すレスポンダです。

図 10.45. 使用例( ソフトキーのキーイベントを受信したとき )

使用例( ソフトキーのキーイベントを受信したとき )

例 10.48. メニューの使い方

// メニューハンドラの宣言
HANDLER_DECLARE_VOIDMENU(MenuHandler)

// メニューハンドラの実装
// 第 1 引数 : 所属クラス名
// 第 2 引数 : ハンドラの名前
// 第 3 引数 : result
// 第 4 引数 : menu ( へのポインタ )
HANDLER_IMPLEMENT_VOIDMENU(TextMenu, MenuHandler, result, menu)
{
    // セレクトキーまたはクリアキーのキーイベントを受信したときに起動する
    if (result == SRP16_ESCAPE) { // クリアキーのキーイベントを受信したとき
        TRACE("cancel");
    } else { // セレクトキーのキーイベントを受信したとき ( result には選択した項目の番号が入る )
        TRACE("%s", SFRTextMenuPtr(menu)->GetTitle(result));
    }
}

// メニューの定義
SFRTextMenuPtr menu;

// メニューの作成
menu = ::new SFRTextMenu(SFXRectangle((50,100,150,150) "SFRTextMenu", null, 0);

// メニュー項目の追加
menu->AppendItem("item1", AVK_1);
menu->AppendItem("item2", AVK_2);
menu->AppendItem("item3", AVK_3); 
menu->AppendItem("item4", AVK_4);

// メニューハンドラの登録
menu->RegisterHandler(SREVT_MENU, HANDLER_BEFORE, HANDLER_FUNCTION(MenuHandler));

図 10.46. 実行結果

実行結果