gpt4 book ai didi

c++ - 以编程方式设置标题栏和边框颜色

转载 作者:IT老高 更新时间:2023-10-28 21:37:03 27 4
gpt4 key购买 nike

我正在尝试以编程方式更改我的应用程序的标题栏和边框颜色。我尝试了很多东西但没有成功,并决定在系统范围内更改这些颜色。因为我也可以在我的应用程序运行时更改标题栏和边框颜色,并在我的应用程序结束时恢复它们。 (托管环境,运行少量应用程序)

是否可以动态更改这些颜色(进程范围或系统范围,除非可以进行进程范围的更改)?您能提出任何实现这一目标的方法吗?

我尝试了以下类似的方法,但没有达到我想要的效果:

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);

提前致谢

编辑

这正是我想要的:

enter image description here

最佳答案

我不建议自定义边框和标题重绘。以正确的方式做到这一点真的很难。 Office 只是在客户区域中自行绘制所有内容,但使用正常边框。以正确的方式使用 NC_PAINT 会很痛苦,并且可能会导致闪烁。尤其是最小化、最大化和关闭按钮的定位很困难,因为每个窗口的做法都不一样。还要考虑可访问性、使用的较大字体、自定义用户设置。

改变颜色的目的是什么?

要更改全局颜色,您至少必须分离代码

//在应用程序启动时调用一次(例如在 WM_CREATE 中)

SetSysColors(2, aElements, aNewColors); 

//在关闭应用程序时调用它(例如在 WM_DESTROY 中)

SetSysColors(2, aElements, aOldColors); 

关于c++ - 以编程方式设置标题栏和边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310316/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com