Почему OpenThemeData(pParent, L"TEXTSTYLE") не работает в XP?

Я использую библиотеку тем, чтобы нарисовать какой-то текст, который прекрасно работает в Windows Vista, однако в Windows XP возвращаемый HTHEME равен NULL. Это код, который я использую:

HTHEME hTheme = ::OpenThemeData(pParent, L"TEXTSTYLE");

h Тема действительна в Vista, но NULL в Windows XP.
Я прочитал документацию по OpenThemeData и Parts and States на MSDN, но ничто не упоминает, что TEXTSTYLE не поддерживается в XP (даже Google не выдвигает никаких хороших предложений).

2 ответа

Решение

Тема Luna (то есть созданная Microsoft тема, поставляемая с XP) определяет только подмножество классов и частей Aero (Windows Vista и 7).

Если у вас есть доступ к компьютерам с Windows XP и Vista (или 7), вы можете просмотреть то, что определено утилитой Theme Explorer: http://sourceforge.net/projects/mctrl/files/theme-explorer/

Я предполагаю, что на XP у вас все еще включена тема? Если вы отключили режим "жевательная резинка", т. Е. Вернулся к классическому виду, все API-интерфейсы Theming завершатся неудачно, и ожидается, что вы будете использовать устаревшие API-интерфейсы для рисования элементов фрейма. DrawFrameControl и т. Д.

Другие вопросы по тегам