К сожалению, это требует много перехватов, а не просто P / Invoke.
Вероятно, вам быстрее и лучше переопределять / создавать новые элементы управления с помощью управляемого кода. В противном случае вам нужно будет перехватывать вызовы тем с помощью встроенной библиотеки DLL и быть очень осторожным в том, что вы делаете.
На самом деле, я не знаю, как реализовать это сам, боюсь. Я бы дал более полезный ответ. Весь прогресс кажется чрезмерно сложным, если взглянуть на код уже забытого инструмента под названием «VisualStyler» от Style Soft (компания кажется мертвым с 2014 года), который прекрасно поддерживал все это.
Плюс, если вы действительно решите использовать uxtheme, вы застрянете с тем, что предоставляет движок тем для Windows, ограниченный его форматом визуальных стилей и исправлениями (у вас даже есть хороший редактор в настоящее время?).
Хотелось бы, чтобы Microsoft разработала движок тем для XP, чтобы разработчики приложений могли использовать его для собственной идентификации приложения. Но, похоже, они никогда этого не делают, когда дело доходит до их идентичности / идентификатора продукта Windows (другой пример - DWM не раскрывает какие-либо функции 3D-трансформации, но, вероятно, это хорошая идея, чтобы приложения не делали безумных вещей, злоупотребляя такими вещами).
Опция
- Создайте свои собственные элементы управления в управляемом коде, обрабатывая рисование самостоятельно.
- Купите продукт, предлагаемый для приложений Win32.
- Начните знакомиться с WPF, который предоставляет современные и разумные способы создания тем приложений.