用CreateWindowEx是不是可以创建符合Windows Theme(系统主题)的窗口
用CreateWindowEx是否可以创建符合Windows Theme(系统主题)的窗口
在XP系统中,当Theme服务运行时,打开控制面板的“显示属性”,修改主题设置可以改变所有窗口的外观。
既然系统提供这样的功能,我们是否可以使创建的窗口跟随系统的主题呢?(使用WinAPI而不是MFC)可是目前CreateWindowEx创建的都是“经典主题”的窗口。
注意:不要回答自绘控件、换肤组件或者AppFace什么的,我指的不是程序自带多少多少皮肤之类的,而是比如当显示属性里的主题设置成窗口背景是方格子的主题时,我们的程序窗口也是方格子的背景;当用户在显示属性里把主题修改成了窗口背景是一片大海的主题时,我们的程序窗口也跟着变成了一片大海的背景,而无需再程序里设置什么换肤的功能。
问题二:窗口类中设置背景画刷时,到底应该使用哪个画刷才能刷出标准的窗口背景色?
我尝试过COLOR_WINDOW,COLOR_WINDOW+1,COLOR_BACKGROUND,COLOR_BTNFACE,COLOR_GRAY,COLOR_DKGRAY,COLOR_LTGRAY,但是没有一个是标准的窗口背景色。这里我说的窗口背景色是指,比如你打开记事本、资源管理器、画笔、任务管理器、运行窗口,它们都有某个统一的背景色。但是不要告诉我用取色工具取色之后赋值,这个窗口背景色不是一个定值,是可以随系统设置不同而不同的,按道理应该会有某个常量ID代表它吧?
------解决方案--------------------
1、使用CreateWindowEx创建的窗口默认不就是应用了系统主题吗?难道你在XP默认系统主题下生成的窗口是Windows2000样式的??
2、COLOR_WINDOW 看看MSDN中GetSysColor的描述
------解决方案--------------------
COLOR_BTNFACE 就是默认窗体颜色你居然不知道?
COLOR_WINDOW 是指编辑框、列表框等默认的背景色。
CreateWindowEx 创建的控件,要调用 SetWindowTheme 给控件设置主题吧。
在XP系统中,当Theme服务运行时,打开控制面板的“显示属性”,修改主题设置可以改变所有窗口的外观。
既然系统提供这样的功能,我们是否可以使创建的窗口跟随系统的主题呢?(使用WinAPI而不是MFC)可是目前CreateWindowEx创建的都是“经典主题”的窗口。
注意:不要回答自绘控件、换肤组件或者AppFace什么的,我指的不是程序自带多少多少皮肤之类的,而是比如当显示属性里的主题设置成窗口背景是方格子的主题时,我们的程序窗口也是方格子的背景;当用户在显示属性里把主题修改成了窗口背景是一片大海的主题时,我们的程序窗口也跟着变成了一片大海的背景,而无需再程序里设置什么换肤的功能。
问题二:窗口类中设置背景画刷时,到底应该使用哪个画刷才能刷出标准的窗口背景色?
我尝试过COLOR_WINDOW,COLOR_WINDOW+1,COLOR_BACKGROUND,COLOR_BTNFACE,COLOR_GRAY,COLOR_DKGRAY,COLOR_LTGRAY,但是没有一个是标准的窗口背景色。这里我说的窗口背景色是指,比如你打开记事本、资源管理器、画笔、任务管理器、运行窗口,它们都有某个统一的背景色。但是不要告诉我用取色工具取色之后赋值,这个窗口背景色不是一个定值,是可以随系统设置不同而不同的,按道理应该会有某个常量ID代表它吧?
------解决方案--------------------
1、使用CreateWindowEx创建的窗口默认不就是应用了系统主题吗?难道你在XP默认系统主题下生成的窗口是Windows2000样式的??
2、COLOR_WINDOW 看看MSDN中GetSysColor的描述
------解决方案--------------------
COLOR_BTNFACE 就是默认窗体颜色你居然不知道?
COLOR_WINDOW 是指编辑框、列表框等默认的背景色。
CreateWindowEx 创建的控件,要调用 SetWindowTheme 给控件设置主题吧。