培训
使用主题子类
可以对表示 ComboBox、Edit、ExplorerBar、Rebar、Tab 和 Toolbar 等控件的主题类进行子类化,以便为特定控件提供不同的主题。 例如,Button 类可被子类化为 Start::Button
,以便对应用于 Start 按钮的主题进行控制。
备注
在创建子类(如本主题中讨论的子类)时,请务必保持谨慎。 由于子类可能会在 Windows 的后续版本中被更改或不可用,因此不建议使用它们。
应用程序可以通过以下两种方式之一来使用子类化主题:
- 它可以将 OpenThemeData 函数与 pszClassList 参数中
subclass::class
形式的字符串一起使用。 - 它可以通过 pszSubAppName 参数中的主题子类名称来调用 SetWindowTheme。
某些控件(如 Rebar 和工具栏)提供了特定的消息,可以发送这些消息来指示控件使用主题子类。 对于这些控件,请在信息的 lParam 参数中提供一个指向包含主题子类名称的缓冲区指针。 使用通用的 CCM_SETWINDOWTHEME 消息,或者使用下表所示的特定变体。
控制 | Message |
---|---|
Tooltip | TTM_SETWINDOWTHEME |
Toolbar | TB_SETWINDOWTHEME |
Rebar | RB_SETWINDOWTHEME |
ComboBoxEx | CBEM_SETWINDOWTHEME |
下表列出了 Windows Vista 定义的一些子类。
类 | 子类 |
---|---|
ComboBox |
|
编辑 |
|
Rebar |
|
制表符 |
|
Toolbar |
|
在 Windows Vista 中,Windows Internet Explorer 和 Windows Explorer 内部某些类的子类是可用的,即使这些类本身不可用。 下表列出了可用的子类。
类 | 子类 |
---|---|
AddressBand |
|
SearchBox |
|
下表显示了这些类的具体内容。
控制 | 组成部分 | 状态 |
---|---|---|
ADDRESSBAND | ABBACKGROUND | NORMAL (0x1), HOT (0x2), DISABLED (0x3), FOCUSED (0x4) |
SEARCHBOX | SBBACKGROUND | NORMAL (0x1), HOT (0x2), DISABLED (0x3), FOCUSED (0x4) |
其他资源
文档
-
SetWindowTheme 函数 (uxtheme.h) - Win32 apps
导致窗口使用一组不同于其类通常使用的视觉样式信息集。
-
OpenThemeData 函数 (uxtheme.h) - Win32 apps
打开窗口及其关联类的主题数据。
-
SetWindowThemeAttribute 函数 (uxtheme.h) - Win32 apps
设置属性以控制如何将视觉样式应用于指定窗口。