1

我一直对我们如何实现这一点很感兴趣(使用 alt 键隐藏/显示主菜单),现在一些应用程序经常这样做。真正让我满意的是带有此插件的 Visual Studio 2010:http: //visualstudiogallery.msdn.microsoft.com/bdbcffca-32a6-4034-8e89-c31b86ad4813?SRC= VSIDE

(firefox也这样做,但我认为这是不同的方式)

谁能解释一下如何实现这一点,或者如果您知道任何可以证明这一点的示例项目,请告诉我。

(我在堆栈中的一些回复中可以看到,我们必须在隐藏时销毁菜单并在显示时创建它?!但这似乎有点糟糕的解决方案......)

谢谢

4

4 回答 4

5

SetMenu功能允许您从窗口中添加/删除菜单。它不会破坏菜单。

请注意,大多数具有动态菜单隐藏/显示行为的应用程序并没有真正显示菜单。他们正在显示一个看起来像菜单的自定义控件。

于 2011-10-26T06:34:53.770 回答
1

您还可以查看MFC 对自动隐藏菜单的支持。我使用了这种技术,效果非常好。

于 2012-03-14T14:24:15.603 回答
1

在 CMainFrame::OnCreate 我做了 m_wndMenuBar.ShowWindow(SW_HIDE); 在我们的项目中实际上工作正常

于 2016-08-08T14:15:49.257 回答
0

我偶然发现了一个相关的坑洼,它会在未经您同意的情况下显示隐藏的主框架:

每当 MDI 应用程序中子窗口的焦点发生变化(例如,由于在其中单击鼠标右键),该函数CMDIChildWnd::OnMDIActivate将被调用,该函数依次显示 MDI 应用程序的主菜单(即使它之前已被删除或销毁)。这基本上是通过从底层证券的 CMDIChildWndm_hMenuShared变量中添加保存的主手册来实现的。

防止这种情况发生的快速而肮脏的技巧是将所有子框架的 m_hMenuShared 设置为 NULL(它在 CMDIChildWnd 中受到保护,因此这需要 CMDIChildWnd 的自定义派生子类)。

于 2013-04-16T16:40:01.260 回答