有没有办法在不使用SetSysColors的情况下为单个进程更改普通Win32菜单(背景,文本和高亮显示)使用的颜色?
(SetSysColors执行全局更改,这很糟糕,如果您在退出之前崩溃或忘记再次使用SetSysColors设置颜色,则在您注销之前不会恢复它们.)
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);