开启程序的Visual Styles

首先看看MS对Visual Styles的解释:html

Windows XP and later operating systems support a feature called visual styles that enables the appearance of common controls to change based on the theme chosen by the user. Prior to Windows 8, you must specifically configure your application to use visual styles; otherwise, the application's common controls are always rendered in the style associated with the Windows Classic theme, regardless of the currently selected theme. In Windows 8, visual styles can't be turned off, Windows Classic mode no longer exists, and high contrast mode has been modified to work with visual styles.windows

XP之后的系统支持一种叫作可视化风格的界面,界面能够随着系统的主题改变而变化。程序必须明确的去启用这种风格,不然程序就是经典风格界面 ,程序界面不随系统主题而改变。win8还新增了一种高对比度模式的界面,暂不讨论。app

http://msdn.microsoft.com/en-us/library/windows/desktop/bb773187(v=vs.85).aspxless

能够明显感受visual styles要圆润漂亮了不少函数

 

开启 Visual Styles的方法ui

 

要使用 Visual Styles,须要第六版或更新的的ComCtl32.dll, ComCtl32.dll不重发行,只是预置在系统当中。xp之后的系列都同时有第五版和第六版的this

ComCtl32.dll,第六版的ComCtl32.dll包含user controls and the common controls。默认状况下程序使用定义在User32.dll中的user controls  和定义在第五版 ComCtl32.dll 中的 common controlsspa

 

comCtl32.dll版本介绍.net

 

ComCtl32.dll
Version Distribution Platform
4.0 Windows 95 and Microsoft Windows NT 4.0
4.70 Internet Explorer 3.0
4.71 Microsoft Internet Explorer 4.0
4.72 Microsoft Internet Explorer 4.01 and Windows 98
5.80 Windows 98 Second Edition and Microsoft Internet Explorer 5
5.81 Windows Millennium Edition (Windows Me), Windows 2000, Microsoft Internet Explorer 5.01, Microsoft Internet Explorer 5.5, and Microsoft Internet Explorer 6
5.82 Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, and Windows 7
6.0 Windows XP, Windows Server 2003
6.10 Windows Vista, Windows Server 2008, and Windows 7

 

 

http://msdn.microsoft.com/en-us/library/windows/desktop/hh298349(v=vs.85).aspxcode

 

 

@:添加程序清单的方法1

在工程目录下新建一个文本xml格式的清单文件“程序名.exe.manifest”,而后添加到资源中,文件内容为
 
[html]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
  3. <assemblyIdentity  
  4.     version="1.0.0.0"  
  5.     processorArchitecture="*"  
  6.     name="CompanyName.ProductName.YourApplication"  
  7.     type="win32"  
  8. />  
  9. <description>Your application description here.</description>  
  10. <dependency>  
  11.     <dependentAssembly>  
  12.         <assemblyIdentity  
  13.             type="win32"  
  14.             name="Microsoft.Windows.Common-Controls"  
  15.             version="6.0.0.0"  
  16.             processorArchitecture="*"  
  17.             publicKeyToken="6595b64144ccf1df"  
  18.             language="*"  
  19.         />  
  20.     </dependentAssembly>  
  21. </dependency>  
  22. </assembly>  


mainfest详解:
 
description段 assemblyIdentity 元素的属性集
 
Attribute Description
version Version of the manifest. The version must be in the form major.minor.revision.build (that is, n.n.n.n, where n <=65535).
processorArchitecture Processor for which your application is developed.
name Includes company name, product name and application name.
type Type of your application, such as Win32.

 

dependency段 assemblyIdentity 元素的属性集

 

Attribute Description
type Type of the dependency component, such as Win32.
name Name of the component.
version Version of the component.
processorArchitecture Processor that the component is designed for.指定处理器。有效值为 msil、x8六、IA64 和 amd64。
publicKeyToken Key token used with this component.
language Language of the component.

 

 

@:添加程序清单的方法2

 

在vs2005之后,设置visual styles能够不须要程序部署清单文件,而只是发送一个编译指令。在“stdafx.h”中添加一下几行就能够了

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. #pragma comment(linker,"\"/manifestdependency:type='win32' \  
  2. name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \  
  3. processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")  

 

MSND上说还需

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. <span style="white-space:pre">  </span>// 若是一个运行在 Windows XP 上的应用程序清单指定要  
  2.     // 使用 ComCtl32.dll 版本 6 或更高版原本启用可视化方式,  
  3.     //则须要 InitCommonControlsEx()。不然,将没法建立窗口。  
  4.     INITCOMMONCONTROLSEX InitCtrls;  
  5.     InitCtrls.dwSize = sizeof(InitCtrls);  
  6.     // 将它设置为包括全部要在应用程序中使用的  
  7.     // 公共控件类。  
  8.     InitCtrls.dwICC = ICC_WIN95_CLASSES;  
  9.     InitCommonControlsEx(&InitCtrls);  

 

 

 

可是发现不添加也没事,xp也可正常实现,懂得能够给说说

 

 

 

@:关闭Visual Styles

1:能够调用SetWindowTheme函数关闭一个或多个控件的visual styles
[cpp]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. #include "Uxtheme.h"  
  2. #pragma comment(lib,"UxTheme.lib")  
 
[cpp]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. SetWindowTheme(hwnd, L" ", L" ");  
 
2:也能够调用InitInstance以前调用void SetThemeAppProperties( DWORD dwFlags),不设置 STAP_ALLOW_NONCLIENT 标志可关闭整个程序全部窗口的的Visual Styles
 
[cpp]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. #include "Uxtheme.h"  
  2. #pragma comment(lib,"UxTheme.lib")  

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到个人代码片
  1. DWORD dwFlags = (STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT);  
  2. SetThemeAppProperties(dwFlags);  

http://blog.csdn.net/x356982611/article/details/18403869

相关文章
相关标签/搜索