我一直对如何实现这一点感兴趣(使用alt键隐藏/显示主菜单),现在一些应用程序经常这样做。真正让我高兴的是带有这个插件的visual studio 2010: http://visualstudiogallery.msdn.microsoft.com/bdbcffca-32a6-4034-8e89-c31b86ad4813?SRC=VSIDE
(firefox也这样做,但我认为这是以不同的方式)
任何人都可以向我解释如何实现这一目标,或者如果您知道任何示例项目,请告诉我。
(我在堆栈中的一些回复中可以看到,我们必须销毁菜单时隐藏并在显示时创建它?!但这似乎有点不好解决方案......)
由于
答案 0 :(得分:3)
SetMenu
功能可让您从窗口添加/删除菜单。它不会破坏菜单。
请注意,大多数具有动态菜单隐藏/显示行为的应用程序并未真正显示菜单。他们正在显示看起来像菜单的自定义控件。
答案 1 :(得分:1)
您也可以查看MFC support for auto hiding menus。我使用了这种技术,效果非常好。
答案 2 :(得分:1)
在CMainFrame :: OnCreate中我做到了 m_wndMenuBar.ShowWindow(SW_HIDE); 这实际上在我们的项目中工作正常
答案 3 :(得分:0)
我偶然发现了一个相关的坑落,未经您的同意,将显示隐藏的主框架:
每当MDI应用程序中子窗口的焦点发生变化时(例如,由于右键单击它),将调用函数CMDIChildWnd::OnMDIActivate
,然后显示主菜单(即使它已被删除或以前销毁过的MDI应用程序。
这基本上通过从底层的CMDIChildWnd m_hMenuShared
变量添加保存的主manu来工作。
为了防止这种情况,快速和肮脏的黑客攻击是将m_hMenuShared设置为NULL(它在CMDIChildWnd中受保护,因此需要一个CMDIChildWnd的自定义派生子类)。