2011-10-11 63 views
0

我一直對如何完成此操作感興趣(使用alt鍵隱藏/顯示主菜單),現在有些應用程序經常這樣做。一個真正讓我高興的是Visual Studio 2010的這個插件: http://visualstudiogallery.msdn.microsoft.com/bdbcffca-32a6-4034-8e89-c31b86ad4813?SRC=VSIDE如何在win32/mfc應用程序中隱藏/摺疊主菜單

(火狐也做到這一點,但我認爲這是一種不同的方式)

任何人都可以解釋我如何可以做到這一點或如果你知道任何示範項目,請告訴我。

(我可以在這裏堆了一些答覆看到的是,我們已經在爲隱藏,當是展示創建它摧毀菜單?但這似乎有點壞的解決方案...)

謝謝

回答

3

SetMenu功能允許您從窗口中添加/刪除菜單。它不會破壞菜單。

請注意,大多數具有動態菜單隱藏/顯示行爲的應用程序並不真正顯示菜單。他們正在顯示一個自定義控件,看起來像菜單。

+0

你能指出我的一些例子嗎? – Nuno

+0

恩,'SetMenu(hwnd,NULL);/*刪除菜單* /' –

+0

我期待一個自定義控件的例子,看起來像一個菜單:)但確定 – Nuno

1

你也可以看看MFC support for auto hiding menus。我使用了這種技術,效果非常好。

每當(由於右擊它EG)的焦點在MDI應用程序變化的子窗口,功能:

+0

這有以下問題:「此方法影響爲Windows Vista及更早版本編寫的應用程序中的菜單狀態。」 – Nuno

0

我碰到一個相關的坑下跌,將顯示一個隱藏的主框架未經您的同意跌跌撞撞將調用CMDIChildWnd::OnMDIActivate,這反過來顯示MDI應用程序的主菜單(即使它以前被刪除或銷燬)。 這工作基本上通過添加從基礎的CMDIChildWnd m_hMenuShared變量保存的主manu。

快速&骯髒的黑客,以防止這種情況,是設置m_hMenuShared爲NULL(它在受保護的CMDIChildWnd所以這需要一個自定義的派生子類的CMDIChildWnd)的所有子幀。

1

in CMainFrame :: OnCreate我做了 m_wndMenuBar.ShowWindow(SW_HIDE); 這實際上在我們的項目中正常工作

相關問題