我在使用ATL/C 构建的资源栏内有一个工具栏。一切都很好,但是应用的视觉风格有些过时。从我阅读的内容中,它与第6版commctrl有关。我的问题是:
- 我在正确的轨道上与第6个commctrl发行有关吗?
- 你们有任何资源,可以为我提供一个例子吗?
我已经尝试过:
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' "
"version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"")
无济于事,我认为这是因为它不是应用程序,而是由一个过程(iexplorer)引入的DLL。如果是这样,也有一个:
//Using ComCtl32 Version 6 in an Application That Uses Extensions, Plug-ins, or a DLL That Is Brought into a Process
位于:https://msdn.microsoft.com/en-us/library/windows/desktop/ms649781(v=vs.85).aspx我要在此时尝试。
尴尬的我原始帖子的第二位解决了我的问题:
我将从https://msdn.microsoft.com/en-us/library/windows/desktop/ms649781(v=vs.85).aspx添加完整帖子:
在使用扩展名的应用程序中使用comctl32版本6, 插件或将其带入过程的DLL
以下是使用扩展应用的应用程序的示例。 微软管理控制台(MMC)Windows Shell Microsoft Visual Studio comctl32.dll版本6并不完全向后兼容 因为某些控件已修改并添加了新的控件。 使用公共控件的版本6可能需要更改代码 你的申请。如果一个应用程序使用一个由A开发的扩展 第三方,如果您有兼容性,则无法更改扩展名 问题。以下步骤描述了如何应用视觉样式 在您的应用程序中不影响扩展。创建一个 清单并允许您的应用程序使用视觉样式。包括 通用控制标头文件如下:
#include "commctrl.h"
使用-disolation_aware_enabled标志或 在#include" Windows.h"之前插入以下语句 语句。
#define ISOLATION_AWARE_ENABLED 1
将一个名为yourapp.manifest的文件添加到您的源树中 XML清单格式。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly
xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApplication"
type="win32" /> <description>Your application description here.</description> <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
将清单添加到您的应用程序的资源文件中:
simationaware_manifest_resource_id rt_manifest" yourapp.manifest"
hinuser.rh包括以下定义:
#define RT_MANIFEST 24
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2