Ces*_*arB 3 winapi menu colors
有没有办法在不使用SetSysColors的情况下为单个进程更改普通Win32菜单(背景,文本和高亮显示)使用的颜色?
(SetSysColors执行全局更改,这很糟糕,如果您在退出之前崩溃或忘记再次使用SetSysColors设置颜色,则在您注销之前不会恢复它们.)
Ser*_*ier 10
SetMenuInfo()API是你的朋友.它允许您应用任何画笔来绘制菜单的背景.
这些方面的东西可以解决你的问题:
MENUINFO mi = { 0 };
mi.cbSize = sizeof(mi);
mi.fMask = MIM_BACKGROUND|MIM_APPLYTOSUBMENUS;
mi.hbrBack = hBrush;
HMENU hMenu = ::GetMenu(hWnd);
SetMenuInfo(hMenu, &mi);
Run Code Online (Sandbox Code Playgroud)
如果我相信你对 Rob 的评论,那是针对皮肤应用程序,具有特殊的外观和感觉。因此,正如费雷克指出的那样(以一种不友好的方式......),正确的方法可能是使用所有者绘制的菜单:您将能够精确地定义它们的外观。