none
CMFCRibbonBarの切替えについて RRS feed

  • 質問

  • お世話になります。

    CMFCRibbonBarの切替えについてご教示ください。

    ボタンを押下する毎にCMFCRibbonBarの切替えをしたいです。

    やりたいこと:

    AとBのリボンがあり、起動時はBのリボンを表示した画面を作成。

    Aボタンが押下された場合はAのリボンを表示。

    Bボタンが押下された場合はBのリボンを表示。

    というように、リボンの切替えを行いたいのです。

    どのように行えばよいかご教示いただけますか。

    Visual Studio2010, C++で作成しています。

    よろしくお願いいたします。

    2019年7月31日 6:53

回答

  • ウィンドウの構築(ロード、初期化を含む)は高コスト(時間と手間)です。
    従って、ユーザーにモードレスなウィンドウを操作できない様にする二つの方法、つまり

    (1)破棄(DestroyWindow();)する(再度表示するには再構築しなければならない)。
    (2)消去(ShowWindow( SW_HIDE);)にする(非表示になっているだけなので表示させれば元通り)。

    のうち、一般には(2)の手段が利用されます。
    本件の場合、AとBのリボンは両方構築し、一方を「表示」し他方を「消去」することになります。
    これを行うには、ABの両方のインスタンスを保持している必要があります。
    「表示」と「消去」の最も簡単な方法は、CWnd::ShowWindow()を使用することです。


    これだけだと、表示位置の問題が出るかもしれませんが、試してみる価値はあると思います。

    2019年8月1日 3:58

すべての返信

  • どこまでできているのか不明なのでコメントしづらいのではないでしょうか。

    (1)Aボタン、Bボタンの作成表示と、そのコマンド処理はできてますでしょうか。
    (2)次に、リボンバーでなくもっと簡単な、例えばモードレスのDLGや、
      ツールバー、クライアント領域に作ったボタン等でやった場合に、AB切り替えは万全でしょうか。

    ここまで、できていれば(あれば)リボンバー特有の問題について検討することができるかもしれません。
    2019年8月1日 1:18
  • 仲澤@失業者 様

    ご返信、ありがとうございます。

    (1)Aボタン、Bボタンの作成表示、そのコマンドの処理はできています。

    (2)は行ってないです。

    すみません。以下のことが行いたいです。

    起動時は以下を行います。

    CRibbonBarEx* ribbonBar;

    riboonBar = new CRibbonBarEx();

    ribbonBar->Create(this);

    ribbonBar->LoadFromResource(IDR_RIBBON_B);

    Aボタンが押下された場合は

    ribbonBar->LoadFromResource(IDR_RIBBON_A);

    を行い、リボンの表示を変更したいと思っております。

    Aボタンが押下された場合に

    先に表示していたIDR_RIBBON_Bのリボンを削除して

    ribbonBar->LoadFromResource(IDR_RIBBON_A);

    を表示したいのですが、IDR_RIBBON_Bのリボンの削除方法がわかりません。

    申し訳ありませんが、ご教示いただけますか。

    よろしくお願いいたします。
    2019年8月1日 2:08
  • ウィンドウの構築(ロード、初期化を含む)は高コスト(時間と手間)です。
    従って、ユーザーにモードレスなウィンドウを操作できない様にする二つの方法、つまり

    (1)破棄(DestroyWindow();)する(再度表示するには再構築しなければならない)。
    (2)消去(ShowWindow( SW_HIDE);)にする(非表示になっているだけなので表示させれば元通り)。

    のうち、一般には(2)の手段が利用されます。
    本件の場合、AとBのリボンは両方構築し、一方を「表示」し他方を「消去」することになります。
    これを行うには、ABの両方のインスタンスを保持している必要があります。
    「表示」と「消去」の最も簡単な方法は、CWnd::ShowWindow()を使用することです。


    これだけだと、表示位置の問題が出るかもしれませんが、試してみる価値はあると思います。

    2019年8月1日 3:58