我在具有标准 MFC 主菜单的现有 MFC 应用程序中获得了一个菜单。
但我想改变它的背景颜色,使它看起来更无缝地属于应用程序的其余部分。
第一张图片:MFC 主菜单。如工具栏中所示,该应用程序的皮肤为蓝色,但菜单仍然是标准的灰色背景颜色。
第二张图片:Spotify的菜单,经过皮肤处理以适应其他颜色。
我没有找到任何类似的例子。你能指点我如何实现这一目标吗?
我想到的方法:
将 CMenu 子类化为我自己的 SkinnedMenu,但它不是由我们的代码创建的,而是由
GetMenu()
派生自CFrameWnd
. 我在这里唯一能找到的是它的方法签名,定义在afxwin.h
那么我怎么能使用我自己的子类菜单呢?删除整个菜单并连续添加我自己的自定义菜单按钮,使其看起来像一个菜单。也许这就是 Spotify 所做的,因为他们还删除了 Windows 窗口框架。
以某种方式编辑现有的 CMenu,但我现在能找到的唯一自定义是修改其
MENUINFO
. 例如,如果我设置info.hbrBack = skin.GetSysColorBrush(COLOR_MENU)
唯一改变的颜色是下拉菜单的背景,而不是主菜单本身。其他 :)