在 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
更新:微软改进了较新版本的 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;
}
Run Code Online (Sandbox Code Playgroud)
当明/暗设置更改时,顶层窗口会收到WM_SETTINGCHANGE消息。
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |