Using Microsoft Windows XP, you can now define the
visual style or appearance of controls and windows from simple colors to
textures and shapes. You can control each defined part of a control as well
as each part of the nonclient (frame and caption) area of a window. The user
can then use the Appearance tab in the Windows Control Panel to switch
between the classic visual style and other available styles.
A visual style is included with the Windows XP
release. Using helper libraries and application programming interfaces
(APIs), you can incorporate the Windows XP visual style into your
application with few code changes. For information about the differences
between themes and visual styles, see
Themes and Visual Styles.
ComCtl32.dll Version 6
All applications running on the Windows XP
operating system have a nonclient area, which includes the window frame and
nonclient scroll bars. A visual style is applied to the nonclient area by
default. This means that the appearance of the nonclient area is specified
by the visual style that is currently installed. To apply a visual style to
common controls in the client area, you must use ComCtl32.dll version 6 or
later. Unlike earlier versions of ComCtl32.dll, version 6 is not
redistributable. The only way you can use version 6 of the dynamic-link
library (DLL) is to use an operating system that contains it. Windows XP
ships with both version 5 and version 6. ComCtl32.dll version 6 contains
both the user controls and the common controls. By default, applications use
the user controls defined in User32.dll and the common controls defined in
ComCtl32.dll version 5.
If you want your application to use visual styles,
you must add an application manifest that indicates that ComCtl32.dll
version 6 should be used if it is available. Version 6 includes some new
controls and new options for other controls, but the biggest change is
support for changing the appearance of controls in a window.
Using Manifests to Ensure That Visual Styles Can
Be Applied to Applications
As previously discussed, you must use ComCtl32.dll
version 6 to apply visual styles to your applications and use an application
manifest to ensure that version 6 is available to your application. An
application manifest describes an application and specifies the components
required to run the application, such as any dependencies.
You must use Extensible Markup Language (XML) to
write a manifest. The name of the application manifest file is the name of
your executable followed by the file extension .manifest. For example,
MyApp.exe.manifest. The following sample manifest shows that the first
section describes the manifest itself. The following table shows the
attributes set by the assemblyIdentity element in the
manifest description section.
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 Microsoft Win32. |
The sample manifest also provides a description of
your application and specifies application dependencies. The following table
shows the attributes set by the assemblyIdentity element in
the dependency section.
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. |
publicKeyToken |
Key
token used with this component. |
language |
Language of the component. |
Following is an example of a manifest file.
Important If you write an
application for the 64 bit Windows platform, you must change the
processorArchitecture entry to
processorArchitecture="IA64".
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
The following topics describe the steps for
applying visual styles to different types of applications. Notice that the
manifest format is the same in each case.
Using ComCtl32.dll Version 6 in an Application
That Does Not Use Third Party Extensions
The following are examples of applications that do
not use third party extensions.
- Calculator
- FreeCell
- Minesweeper
- Notepad
- Solitaire
To create a manifest and enable your
application to use visual styles.
- Link to ComCtl32.lib and call
InitCommonControls.
- Add a file called YourApp.exe.manifest to your
source tree that has the XML manifest format.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
- Add the manifest to your application's
resource file as follows:
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
Note When you add the
previous entry to the resource you must format it on one line.
Alternatively, you can place the XML manifest file in the same
directory as your application's executable file. The operating
system will load the manifest from the file system first, then check
the resource section of the executable. The file system version
takes precedence.