0

我在具有标准 MFC 主菜单的现有 MFC 应用程序中获得了一个菜单。

但我想改变它的背景颜色,使它看起来更无缝地属于应用程序的其余部分。

  • 第一张图片:MFC 主菜单。如工具栏中所示,该应用程序的皮肤为蓝色,但菜单仍然是标准的灰色背景颜色。

  • 第二张图片:Spotify的菜单,经过皮肤处理以适应其他颜色。

菜单

我没有找到任何类似的例子。你能指点我如何实现这一目标吗?

我想到的方法:

  1. 将 CMenu 子类化为我自己的 SkinnedMenu,但它不是由我们的代码创建的,而是由GetMenu()派生自CFrameWnd. 我在这里唯一能找到的是它的方法签名,定义在afxwin.h那么我怎么能使用我自己的子类菜单呢?

  2. 删除整个菜单并连续添加我自己的自定义菜单按钮,使其看起来像一个菜单。也许这就是 Spotify 所做的,因为他们还删除了 Windows 窗口框架。

  3. 以某种方式编辑现有的 CMenu,但我现在能找到的唯一自定义是修改其MENUINFO. 例如,如果我设置info.hbrBack = skin.GetSysColorBrush(COLOR_MENU)唯一改变的颜色是下拉菜单的背景,而不是主菜单本身。

  4. 其他 :)

4

0 回答 0