gpt4 book ai didi

winapi - Windows 10 : GetSysColor() does not get dark ui color theme

转载 作者:行者123 更新时间:2023-12-03 16:23:44 24 4
gpt4 key购买 nike

在Windows 10上,“深色主题”现在可用。

在Tk中,GetSysColor()用于获取Windows系统颜色,并且
WM_SYSCOLORCHANGE用于跟踪颜色变化。

选择高对比度主题时,Tk会拾取颜色变化。

选择dark-ui时,Tk看不到颜色变化,并且重新启动程序也不会拾取颜色变化。

要获得这些颜色是否需要做一些特别的事情?

编辑:

这些是Tk中的相关文件:

list :http://core.tcl.tk/tk/artifact/52574f6bb5c1c0d6

监控代码:http://core.tcl.tk/tk/artifact/4629f358581eb7aa

初始化/VS API代码:http://core.tcl.tk/tk/artifact/ab91ac197b786344

最佳答案

更新:Microsoft在较新版本的Windows 10中改进了深色主题处理,因此在某些情况下,此答案将已过时。

通常,“深色/浅色主题”开关仅适用于“现代” UWP应用。您可以验证“计算器”,“日历”和“联系人”是否切换了颜色,而经典应用程序“资源管理器”,“记事本”和“绘画”却没有。
我不确定是否要将Tk移植到UWP,因为您似乎没有朝这个方向做任何步骤。在经典应用程序中,黑暗模式是有问题的,因为基本的Windows控件(按钮,标签,编辑字段)不支持它。
如果您真的想响应经典应用程序中的“明/暗”设置开关进行更改,请从DWORD获取HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme

bool IsDarkThemeActive()
{
DWORD type;
DWORD value;
DWORD count = 4;
LSTATUS st = RegGetValue(
HKEY_CURRENT_USER,
TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"),
TEXT("AppsUseLightTheme"),
RRF_RT_REG_DWORD,
&type,
&value,
&count );
if ( st == ERROR_SUCCESS && type == REG_DWORD )
return value == 0;
return false;
}
更改“亮/暗”设置后,顶级窗口将显示 WM_SETTINGCHANGE消息。

关于winapi - Windows 10 : GetSysColor() does not get dark ui color theme,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52101827/

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