Affice Com Add-in, в диалогах нет темы Luna/Aero (они похожи на Windows 98 Classic Look)
Вопрос
У меня есть дополнение к Office 2007, которая добавляет панель инструментов с некоторыми кнопками и обработчиками для своих событий OnClick. Когда пользователь нажимает на кнопки, показывают некоторые диалоги. Но эти диалоги имеют датированные Windows 98, внешний вид с прямоугольными кнопками, даже в Windows 7.
Я знаю, что вам нужен манифестный файл, чтобы включить тематические тематические, но это добавление создано с помощью Visual Studio 2008, и он добавляет манифест автоматически, который выглядит так:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
Что я должен изменить, чтобы мой диалог использовал текущую тему вместо вида Windows 98? Я читал об осознании изоляции, но это, похоже, тоже не сработало.
Решение
Как вы обнаружили, добавление манифеста - это только половина битвы. Вам также нужно позвонить InitCommonControlsEx
функция Когда ваше дополнение инициализируется, прежде чем будут созданы какие-либо элементы управления. Это необходимо, чтобы зарегистрировать классы окна для общих элементов управления, которые вы используете.
И на случай, если вы скептически относитесь к документации, Microsoft Raymond Chen опубликовал Статья в своем блоге Некоторое время назад обращается именно к этой проблеме.
Если у вас есть другие проблемы, проверьте эту статью: Как применить темы Windows XP в Office Com Adn-INS