得到Windows系统时钟字体颜色
2010-10-10 15:19
288 查看
很多朋友提到如何得到系统时钟的字体颜色的问题,这个问题的相关资料在MSDN中描述非常少,至于具体涉及的API的使用方法还需要MS日后发布新的说明文档才能够弄清。为了实际工程应用,暂且抛开这些API的详细说明,看一看如何获取时钟字体颜色的方法吧。
首先时钟字体颜色是由Windows操作系统应用的主题决定的(XP系统),需要使用主题相关的一些API,因此首先包含其头文件,同时连接到库文件。
#include <uxtheme.h>
#include <vssym32.h>
#pragma comment(lib, "uxtheme.lib")
之后在初始化代码中加入如下代码。
SetWindowTheme(m_hWnd, _T("TrayNotify"), NULL);
其中m_hWnd为窗口的句柄,这段代码将当前窗口的主题样式设置为"TrayNotify" ,具体函数意义可以参考MSDN的简要叙述。这个"TrayNotify"的查询方法,我也费了很多周章,如果有朋友想知道如何查询,或者有更好的查询方法,可以告诉我,欢迎大家讨论。
注意,这个函数会发送WM_THEMECHANGED消息到m_hWnd,可以处理WM_THEMECHANGED消息打开需要的主题内容(例如时钟字体颜色),同时在Windows系统主题改变时,系统同样会发送该消息,通过处理该消息,可以达到程序随系统主题改变而改变的目的。
假设我们不处理WM_THEMECHANGED消息,那么在SetWindowTheme之后就可以打开需要的主题资源了,例如如下代码所示。
HTHEME hThemeClock = OpenThemeData(m_hWnd, VSCLASS_CLOCK);
COLORREF ColorText;
GetThemeColor(hThemeClock, CLP_TIME, CLS_NORMAL, TMT_TEXTCOLOR, &ColorText);
以上两句调用和相关参数也可以参考MSDN中的说明。如果hThemeClock = NULL则说明打开失败,或者系统本身没有设置主题(XP中的经典样式)。以往的代码中也提到以上两句,但是hThemeClock总为NULL,不能够正确获得主题资源。
程序关闭时,需要释放资源,释放方法如下。
CloseThemeData(hThemeClock);
以往的说明中,仅有打开资源和获取颜色两部分,没有关于SetWindowTheme与其的配合使用,特此提出,希望能够帮助大家。
首先时钟字体颜色是由Windows操作系统应用的主题决定的(XP系统),需要使用主题相关的一些API,因此首先包含其头文件,同时连接到库文件。
#include <uxtheme.h>
#include <vssym32.h>
#pragma comment(lib, "uxtheme.lib")
之后在初始化代码中加入如下代码。
SetWindowTheme(m_hWnd, _T("TrayNotify"), NULL);
其中m_hWnd为窗口的句柄,这段代码将当前窗口的主题样式设置为"TrayNotify" ,具体函数意义可以参考MSDN的简要叙述。这个"TrayNotify"的查询方法,我也费了很多周章,如果有朋友想知道如何查询,或者有更好的查询方法,可以告诉我,欢迎大家讨论。
注意,这个函数会发送WM_THEMECHANGED消息到m_hWnd,可以处理WM_THEMECHANGED消息打开需要的主题内容(例如时钟字体颜色),同时在Windows系统主题改变时,系统同样会发送该消息,通过处理该消息,可以达到程序随系统主题改变而改变的目的。
假设我们不处理WM_THEMECHANGED消息,那么在SetWindowTheme之后就可以打开需要的主题资源了,例如如下代码所示。
HTHEME hThemeClock = OpenThemeData(m_hWnd, VSCLASS_CLOCK);
COLORREF ColorText;
GetThemeColor(hThemeClock, CLP_TIME, CLS_NORMAL, TMT_TEXTCOLOR, &ColorText);
以上两句调用和相关参数也可以参考MSDN中的说明。如果hThemeClock = NULL则说明打开失败,或者系统本身没有设置主题(XP中的经典样式)。以往的代码中也提到以上两句,但是hThemeClock总为NULL,不能够正确获得主题资源。
程序关闭时,需要释放资源,释放方法如下。
CloseThemeData(hThemeClock);
以往的说明中,仅有打开资源和获取颜色两部分,没有关于SetWindowTheme与其的配合使用,特此提出,希望能够帮助大家。
相关文章推荐
- 改Windows系统字体颜色
- windows 7/2008系统字体变成黑体解决
- html编辑器中得到系统的字体
- 转载:c#如何获取当前系统所有的字体和颜色?
- ToolBar修改系统后退键图标, 设置menu字体颜色大小
- Android系统状态栏字体颜色在暗色背景和亮色背景下的改变方法
- Windows系统中字体不能安装的解决办法
- 更改Windows系统默认字体的方法
- 获取系统字体,颜色
- Android修改系统自带Spinner字体大小和颜色示例代码
- Windows系统时钟间隔
- xelatex使用从windows拷过来的系统字体
- 得到所有有名字的系统颜色
- iOS 修改系统的tabBar的字体颜色
- windows 系统颜色表
- 得到windows系统图标的解决方案
- Windows系统字体的点阵显示示例
- .net中获取系统字体,颜色
- windows 7/2008系统字体变成黑体解决
- ubuntu: An upgrade from 'precise' to 'oneiric' is not supported with this tool;更新未完成; 系统字体颜色无法辨识