1

我有一个 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 外观?我读过关于隔离意识的文章,但这似乎也不起作用。

4

1 回答 1

4

正如您所发现的,添加清单只是成功的一半。您还需要在加载项初始化时调用该InitCommonControlsEx函数,然后再创建任何控件。这是为您使用的常用控件注册窗口类所必需的。

万一你对文档持怀疑态度,微软的 Raymond Chen 不久前在他的博客上发表了一篇文章,正好解决了这个问题。

如果您有任何其他问题,请查看这篇文章:如何将 Windows XP 主题应用于 Office COM 加载项

于 2011-01-19T14:58:39.030 回答