Каковы возможные классы для функции OpenThemeData?

Я пытаюсь вызвать OpenThemeData (см. msdn OpenThemeData), но я не мог определить, какие допустимые имена классов будут переданный параметром pszClassList.

HTHEME OpenThemeData(      
    HWND hwnd,
    LPCWSTR pszClassList
);

Может ли кто-нибудь сказать мне, какие допустимые имена классов я могу передать в этот параметр? Спасибо!

Ответ 1

Вы можете посмотреть в "AeroStyle.xml", как отметил предыдущий плакат, который дает точный список для Vista/Aero. Однако, если вы хотите играть безопасно (и, вероятно, вы это делаете), имена классов должны, в общем, быть именами классов Windows общих элементов Windows. Например, кнопки и флажки используют имя класса "Button", элемент управления редактирования "Редактировать" и т.д. Обычно я выбираю имя класса элемента управления, которое ближе всего к любому настраиваемому элементу, над которым я работаю, и использую данные темы для этого. Таким образом, вы получите код, который работает с XP, Vista и (надеюсь) Windows 7, независимо от того, какая тема пользователя выбрана на самом деле.

Однако, если вы не используете raw Win32 много, вы, вероятно, не делаете большого контроля над созданием напрямую, используя имя класса. Названия классов довольно либерально разбрызгиваются в MSDN. Хорошим местом для запуска обычно является файл CommCtrl.h из Platform SDK, в котором их много, и они всегда описываются в справке MSDN для отдельных общих элементов управления. Вы также можете часто изучать их, рассматривая, как диалоги определены в файлах .rc, открывая их в текстовом редакторе: они содержат имя класса для элементов управления.

Ответ 2

В статье Части и состояния в MSDN содержится таблица, которая показывает классы, части и состояния управления, Значения в таблице определены в Vsstyle.h и Vssym32.h.

Вот краткая ссылка:

BUTTON, CLOCK, COMBOBOX, COMMUNICATIONS, CONTROLPANEL, DATEPICKER, DRAGDROP, 
EDIT, EXPLORERBAR, FLYOUT, GLOBALS, HEADER, LISTBOX, LISTVIEW, MENU, MENUBAND, 
NAVIGATION, PAGE, PROGRESS, REBAR, SCROLLBAR, SEARCHEDITBOX, SPIN, STARTPANEL, 
STATUS, TAB, TASKBAND, TASKBAR, TASKDIALOG, TEXTSTYLE, TOOLBAR, TOOLTIP, 
TRACKBAR, TRAYNOTIFY, TREEVIEW, WINDOW

Ответ на вопрос Визуальные темы Windows: Галерея деталей и состояний? предоставляет приложение "Части и штаты", в котором вы можете просматривать и тестировать большую часть стили.

Ответ 3

Названия классов зависят от темы. Например, поскольку в документации для OpenThemeData указано:

Названия классов для темы Aero: определенный в AeroStyle.xml, который найденный в папке Include Разработка программного обеспечения для Microsoft Windows Kit (SDK).

Ответ 4

Это не имеет ничего общего с Aero, который даже не выходит на XP! См. Исходный код OpenThemeData()..