ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング 逆引きコード集 : メニュー

C++ で作成されたBREW アプリで、レスポンダ(GUIフレームワーク)を使ったメニューの処理を行う方法です。

テキスト メニューを作成する

SFRTextMenu クラスを使って、テキスト メニューを作成します。

SFMTYPEDEFCLASS(UserClass)
class UserClass : public SFRPlainWindow {
  // コンストラクタやエラー処理は省略
  private:
    Void  Main  (Void);
    HANDLER_DECLARE_VOIDMENU(MenuHandler)
};

Void UserClass::Main(Void)
{
    SFRTextMenuPtr menu;
    
   // テキスト メニューの作成
   menu = new SFRTextMenu(SFXRectangle(40, 30, 100, 150),
                            "メニュー", null, 0);

    // AVK_1 はアクセス キー、0xFBF6 は絵文字
    menu->AppendItem("項目1", AVK_1, 0xFBF6); 

    // AVK_2 はアクセス キー、0xFCF6 は絵文字
    menu->AppendItem("項目2", AVK_2, 0xFCF6);
    
    // ハンドラを登録する
    menu->RegisterHandler(SREVT_MENU, HANDLER_BEFORE, 
                          HANDLER_FUNCTION(MenuHandler));

    return;
}

// メニュー ハンドラ
// ( メニューが選択されたとき、またはキャンセルされたときに起動する )
// 第 1 引数 : 所属クラス名
// 第 2 引数 : ハンドラの名前
// 第 3 引数 : result
// 第 4 引数 : menu ( へのポインター )
HANDLER_IMPLEMENT_VOIDMENU(UserClass, MenuHandler, result, menu)
{

    if (result == SRP16_ESCAPE) { // キャンセルされたとき

        TRACE("cancel");
   
    } else { // メニューが選択されたとき( result に選択した項目の番号が入る )

        TRACE("%s", SFRTextMenuPtr(menu)->GetTitle(result));

    }
}