Надстройка Office COM, у диалогов нет темы luna/aero (они выглядят как классический вид Windows 98)
У меня есть надстройка для 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? Я читал об осведомленности об изоляции, но это тоже не сработало.
1 ответ
Как вы обнаружили, добавление манифеста - это только полдела. Вам также нужно позвонить InitCommonControlsEx
функционирует, когда ваша надстройка инициализируется перед созданием каких-либо элементов управления. Это необходимо для регистрации классов окон для общих элементов управления, которые вы используете.
И на случай, если вы скептически относитесь к документации, Рэймонд Чен из Microsoft некоторое время назад опубликовал статью в своем блоге, посвященную именно этой проблеме.
Если у вас есть какие-либо другие проблемы, проверьте эту статью: Как применять темы Windows XP к надстройкам Office COM