在Windows 10上,“黑暗主题”现在可用。
在Tk中,GetSysColor()用于获取Windows系统颜色,并且 WM_SYSCOLORCHANGE用于跟踪颜色变化。
选择高对比度主题时,Tk会拾取颜色变化。
选择dark-ui时,Tk看不到颜色变化,并且重新启动程序也不会发现颜色变化。
要获得这些颜色是否需要做一些特别的事情?
编辑:
这些是Tk中的相关文件:
清单:http://core.tcl.tk/tk/artifact/52574f6bb5c1c0d6
监控代码:http://core.tcl.tk/tk/artifact/4629f358581eb7aa
初始化/ VS API代码:http://core.tcl.tk/tk/artifact/ab91ac197b786344
答案 0 :(得分:1)
答案 1 :(得分:0)
通常,深色/浅色主题开关仅适用于“现代” 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
消息。