Я знаю, что это старый вопрос, но я хочу дать обновленный ответ (2018) для тех, кто пришел сюда из Google.
В принятом ответе DavidK говорится, что нужно заглянуть в файл " AeroStyle.xml ", где определены темы. Этот файл был частью Windows 7 SDK, но был удален из Windows 10 SDK, поэтому принятый ответ больше не нужен.
Ответ всплеск ссылки на MSDN , где список названий тем, частей и состояний является крайне несогласованным и не обновляется.
Темы создаются UxTheme.dll , который считывает изображения, цвета и т. Д. Из файла aero.msstyles в папке C:\Windows\Resources\Themes\Aero
в Windows 10.
Но когда вы откроете этот файл в шестнадцатеричном редакторе, вы не найдете названия всех тем. Я не знаю, есть ли способ перечислить все существующие имена классов тем, которые можно передать в OpenThemeData()
. Я полагаю, что это невозможно.
Но я точно знаю, что в Windows 10 build 18282 Microsoft удалила тему «Clock
», которая больше не используется, и было добавлено множество недокументированных тем, например: «TaskBand2CompositedSmallIconsVertical8Light::Taskband2
», что передается как имя класса темы в OpenThemeData()
.
И я также знаю, что несколько тем можно получить, только если вы передадите правильную ручку окна. Если вы передадите дескриптор неправильного окна, вы можете получить другой дескриптор темы, чем ожидалось, или даже NULL
.
Я также знаю, что Microsoft за последние 2 года внутренне изменила весь свой код, чтобы использовать OpenThemeDataForDpi()
вместо OpenThemeData()
, поскольку каждый монитор в Windows 10 может иметь различное разрешение.
Проблема, с которой мы столкнулись, заключается в серьезном недостатке документации в MSDN и отсутствии функции API для перечисления всех доступных тем.