Почему OpenThemeData(pParent, L“TEXTSTYLE”) завершается с ошибкой в XP?
Вопрос
Я использую библиотеку тем для рисования некоторого текста, который абсолютно нормально работает в Windows Vista, однако в Windows XP возвращаемая HTHEME равна NULL.Это код, который я использую:
HTHEME hTheme = ::OpenThemeData(pParent, L"TEXTSTYLE");
hTheme действителен в Vista, но равен НУЛЮ в Windows XP.
Я прочитал документацию для OpenThemeData - Открытые данные и Части и состояния в MSDN, но нигде не упоминается, что TEXTSTYLE не поддерживается в XP (даже Google не выдает никаких хороших предложений).
Решение
Тема Луна (т.е.тема, созданная Microsoft, распространяемая вместе с XP) определяет только подмножество классов и частей Aero (Windows Vista и 7).
Если у вас есть доступ к компьютерам с Windows XP и Vista (или 7), вы можете просмотреть то, что определено утилитой Theme Explorer:http://sourceforge.net/projects/mctrl/files/theme-explorer/
Другие советы
Я полагаю, что в XP у вас все еще включена тематизация?Если вы отключили режим "жевательная резинка", т.е.при возврате к классическому виду все API-интерфейсы тематизации выходят из строя, и ожидается, что вы будете использовать устаревшие API-интерфейсы для рисования элементов фрейма. Управление DrawFrameControl и т.д.