2016-05-26 12 views
1

私はかなり新しいですが、MFCメニューエディタで作成されたメニューバーを選択して表示する関数を作成する方法があるのでしょうか?ウィンドウの上部に表示されます。各タブには異なるオプションを持つことになりますので選択したタブに基づいてメインメニューバーを選択する関数を作成します

enter image description here

アイデアは、タブごとに異なるメニューバーを持つことです。

例えばより多くの情報が必要な場合は、スクリプト

ためドゥームレッグとID_SCRIPTMENUBARためID_REGMENUBARというメニューバーには、そう言ってください。ありがとう!

答えて

1

CMenu::LoadMenuおよびCWnd::SetMenuを使用してください。たとえば、メンバーデータを宣言します。

CMenu m_menu1, m_menu2; 

は一度メニューを初期化します。

m_menu1.LoadMenu(ID_REGMENUBAR); 
m_menu2.LoadMenu(ID_SCRIPTMENUBAR); 

使用SetMenu(&m_menu1)を実行時にメニューを割り当てること。あなたは、私はそれを実装しようとしていますTCN_SELCHANGE

BEGIN_MESSAGE_MAP(...) 
    ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnTabSelection) 
END_MESSAGE_MAP() 

void CMyWnd::OnTabSelection(NMHDR*, LRESULT*) 
{ 
    int tab = m_Tab.GetCurSel(); 
    CMenu *pMenu = NULL; 
    if (tab == 0) pMenu = &m_menu1; 
    if (tab == 1) pMenu = &m_menu2; 
    CFrameWnd* frame = (CFrameWnd*)AfxGetMainWnd(); 
    frame->SetMenu(pMenu); 
} 
+0

を見ることで、タブの選択の変化に対応できると私はそれがSetMenuを()を実行見ることができます。ブレークポイントを使用しますが、メニューバーは変更されません。何か案は? –

+0

Documentインターフェイスモデルを使用していますか? MDI/SDIなど –

+0

シングルドキュメントインターフェイス。私は実際に私が間違った場所に置いていたことを発見しました。私はちょうど私がそれを選択したタブに基づいて変更するようにそれを動作しようとしている今、メニューバーを変更することができます –

関連する問題