@@ -224,8 +224,6 @@ BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
224
224
ON_WM_NCCALCSIZE()
225
225
ON_WM_SIZE()
226
226
ON_WM_SYSCOMMAND()
227
- ON_WM_ENTERMENULOOP()
228
- ON_WM_EXITMENULOOP()
229
227
ON_UPDATE_COMMAND_UI_RANGE(CMenuBar::FIRST_MENUID, CMenuBar::FIRST_MENUID + 10 , OnUpdateMenuBarMenuItem)
230
228
// [File] menu
231
229
ON_COMMAND(ID_FILE_NEW, (OnFileNew<2 , ID_MERGE_COMPARE_TEXT>))
@@ -253,6 +251,8 @@ BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
253
251
// [View] menu
254
252
ON_COMMAND(ID_VIEW_SELECTFONT, OnViewSelectfont)
255
253
ON_COMMAND(ID_VIEW_USEDEFAULTFONT, OnViewUsedefaultfont)
254
+ ON_COMMAND(ID_VIEW_MENU_BAR, OnViewMenuBar)
255
+ ON_UPDATE_COMMAND_UI(ID_VIEW_MENU_BAR, OnUpdateViewMenuBar)
256
256
ON_COMMAND(ID_VIEW_STATUS_BAR, OnViewStatusBar)
257
257
ON_COMMAND(ID_VIEW_TAB_BAR, OnViewTabBar)
258
258
ON_UPDATE_COMMAND_UI(ID_VIEW_TAB_BAR, OnUpdateViewTabBar)
@@ -325,9 +325,6 @@ BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
325
325
ON_MESSAGE(WMU_CHILDFRAMEREMOVED, &CMainFrame::OnChildFrameRemoved)
326
326
ON_MESSAGE(WMU_CHILDFRAMEACTIVATE, &CMainFrame::OnChildFrameActivate)
327
327
ON_MESSAGE(WMU_CHILDFRAMEACTIVATED, &CMainFrame::OnChildFrameActivated)
328
- // Main menu toggle switch
329
- ON_COMMAND(ID_VIEW_MAIN_MENU, OnToggleMainMenu)
330
- ON_UPDATE_COMMAND_UI(ID_VIEW_MAIN_MENU, OnUpdateToggleMainMenu)
331
328
// }}AFX_MSG_MAP
332
329
END_MESSAGE_MAP()
333
330
@@ -2253,6 +2250,26 @@ BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
2253
2250
return __super::PreTranslateMessage (pMsg);
2254
2251
}
2255
2252
2253
+ /* *
2254
+ * @brief Show/hide menubar.
2255
+ */
2256
+ void CMainFrame::OnViewMenuBar ()
2257
+ {
2258
+ const bool bMenuVisible = !GetOptionsMgr ()->GetBool (OPT_SHOW_MENUBAR);
2259
+ __super::ShowControlBar (&m_wndMenuBar, bMenuVisible, 0 );
2260
+ GetOptionsMgr ()->SaveOption (OPT_SHOW_MENUBAR, bMenuVisible);
2261
+ m_wndMenuBar.SetAlwaysVisible (bMenuVisible);
2262
+ UpdateSystemMenu ();
2263
+ }
2264
+
2265
+ /* *
2266
+ * @brief Updates "Menu Bar" menuitem.
2267
+ */
2268
+ void CMainFrame::OnUpdateViewMenuBar (CCmdUI* pCmdUI)
2269
+ {
2270
+ pCmdUI->SetCheck (GetOptionsMgr ()->GetBool (OPT_SHOW_MENUBAR));
2271
+ }
2272
+
2256
2273
/* *
2257
2274
* @brief Show/hide statusbar.
2258
2275
*/
@@ -2620,9 +2637,10 @@ BOOL CMainFrame::CreateToolbar()
2620
2637
__super::ShowControlBar (&m_wndToolBar, false , 0 );
2621
2638
}
2622
2639
2623
- if (GetOptionsMgr ()->GetBool (OPT_HIDE_MAINMENU ))
2640
+ if (! GetOptionsMgr ()->GetBool (OPT_SHOW_MENUBAR ))
2624
2641
{
2625
2642
__super::ShowControlBar (&m_wndMenuBar, false , 0 );
2643
+ m_wndMenuBar.SetAlwaysVisible (false );
2626
2644
}
2627
2645
2628
2646
m_wndReBar.LoadStateFromString (GetOptionsMgr ()->GetString (OPT_REBAR_STATE).c_str ());
@@ -3728,61 +3746,31 @@ LRESULT CMainFrame::OnChildFrameActivated(WPARAM wParam, LPARAM lParam)
3728
3746
return 1 ;
3729
3747
}
3730
3748
3731
- void CMainFrame::OnToggleMainMenu ()
3732
- {
3733
- const bool bMenuVisible = static_cast <bool >(m_wndMenuBar.IsVisible ());
3734
- __super::ShowControlBar (&m_wndMenuBar, !bMenuVisible, 0 );
3735
- GetOptionsMgr ()->SaveOption (OPT_HIDE_MAINMENU, bMenuVisible);
3736
- UpdateSystemMenu ();
3737
- }
3738
-
3739
- void CMainFrame::OnUpdateToggleMainMenu (CCmdUI* pCmdUI)
3740
- {
3741
- pCmdUI->SetCheck (!GetOptionsMgr ()->GetBool (OPT_HIDE_MAINMENU));
3742
- }
3743
-
3744
3749
void CMainFrame::UpdateSystemMenu ()
3745
3750
{
3746
3751
CMenu* pSysMenu = GetSystemMenu (FALSE );
3747
3752
if (pSysMenu == nullptr )
3748
3753
return ;
3749
- BOOL bChecked = ! GetOptionsMgr ()-> GetBool (OPT_HIDE_MAINMENU) ;
3754
+ bool bFound = false ;
3750
3755
const int cnt = pSysMenu->GetMenuItemCount ();
3751
3756
for (int i = 0 ; i < cnt; ++i)
3752
- if (pSysMenu->GetMenuItemID (i) == ID_SHOW_MAIN_MENU )
3753
- {
3754
- pSysMenu-> CheckMenuItem (i, MF_BYPOSITION | (bChecked ? MF_CHECKED : MF_UNCHECKED));
3755
- return ; // Add only once
3756
- }
3757
- String menuTxt = theApp. LoadString ( static_cast <UINT>(IDS_SHOW_MAIN_MENU ));
3758
- pSysMenu-> AppendMenu (MF_SEPARATOR);
3759
- pSysMenu-> AppendMenu (MF_STRING, ID_SHOW_MAIN_MENU, menuTxt. c_str () );
3760
- pSysMenu->CheckMenuItem (ID_SHOW_MAIN_MENU , MF_BYCOMMAND | (bChecked ? MF_CHECKED : MF_UNCHECKED));
3757
+ if (pSysMenu->GetMenuItemID (i) == ID_VIEW_MENU_BAR )
3758
+ bFound = true ;
3759
+ if (!bFound)
3760
+ {
3761
+ pSysMenu-> AppendMenu (MF_SEPARATOR);
3762
+ pSysMenu-> AppendMenu (MF_STRING, ID_VIEW_MENU_BAR, _ ( " Men&u Bar " ). c_str ( ));
3763
+ }
3764
+ const bool bChecked = GetOptionsMgr ()-> GetBool (OPT_SHOW_MENUBAR );
3765
+ pSysMenu->CheckMenuItem (ID_VIEW_MENU_BAR , MF_BYCOMMAND | (bChecked ? MF_CHECKED : MF_UNCHECKED));
3761
3766
}
3762
3767
3763
3768
void CMainFrame::OnSysCommand (UINT nID, LPARAM lParam)
3764
3769
{
3765
- if (nID == ID_SHOW_MAIN_MENU) {
3766
- OnToggleMainMenu ();
3770
+ if (nID == ID_VIEW_MENU_BAR)
3771
+ {
3772
+ OnViewMenuBar ();
3767
3773
return ;
3768
3774
}
3769
3775
__super::OnSysCommand (nID, lParam);
3770
3776
}
3771
-
3772
- void CMainFrame::OnEnterMenuLoop (BOOL bMainMenu)
3773
- {
3774
- __super::OnEnterMenuLoop (bMainMenu);
3775
- if (!bMainMenu)
3776
- return ;
3777
- if (GetOptionsMgr ()->GetBool (OPT_HIDE_MAINMENU) && !m_wndMenuBar.IsVisible ())
3778
- __super::ShowControlBar (&m_wndMenuBar, true , 0 );
3779
- }
3780
-
3781
- void CMainFrame::OnExitMenuLoop (BOOL bMainMenu)
3782
- {
3783
- __super::OnExitMenuLoop (bMainMenu);
3784
- if (!bMainMenu)
3785
- return ;
3786
- if (GetOptionsMgr ()->GetBool (OPT_HIDE_MAINMENU) && m_wndMenuBar.IsVisible ())
3787
- __super::ShowControlBar (&m_wndMenuBar, false , 0 );
3788
- }
0 commit comments