【发布时间】:2015-11-25 10:23:39
【问题描述】:
我正在尝试以编程方式更改我的应用程序的标题栏和边框颜色。我尝试了很多东西但没有成功,并决定在系统范围内更改这些颜色。因为我也可以在我的应用程序运行时更改标题栏和边框颜色,并在我的应用程序结束时恢复它们。 (托管环境,运行少量应用程序)
是否可以动态更改这些颜色(进程范围或系统范围,除非可以进行进程范围更改)?您能提出任何实现这一目标的方法吗?
我尝试了以下类似的方法,但没有达到我想要的效果:
int aElements[2] = {COLOR_WINDOW, COLOR_ACTIVECAPTION};
DWORD aOldColors[2];
DWORD aNewColors[2];
aOldColors[0] = GetSysColor(aElements[0]);
aOldColors[1] = GetSysColor(aElements[1]);
aNewColors[0] = RGB(0x80, 0x80, 0x80); // light gray
aNewColors[1] = RGB(0x80, 0x00, 0x80); // dark purple
SetSysColors(2, aElements, aNewColors);
SetSysColors(2, aElements, aOldColors);
提前致谢
编辑
这正是我想要的:
【问题讨论】:
-
如果您使用的是 Windows 10,您会遇到一大块白色。
-
暂时是Windows 8.1。我忘了说谢谢你:)
-
@Brandon:你最近用过 Microsoft Office 吗?除了调用
DrawFrameControl之外,渲染窗口的非客户区还有更多。忽略主题也不是很好的风格。 -
Raymond Chen 说得比我好:Don't use global state to manage a local problem 另外,What if two programs did this?