【问题标题】:Deskband (Explorer Bar) Visual StylesDeskband (Explorer Bar) 视觉风格
【发布时间】:2018-03-04 08:01:20
【问题描述】:

我在使用 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,我将在发布此消息时尝试。

【问题讨论】:

    标签: c++ atl


    【解决方案1】:

    我原来帖子的第二点很尴尬地解决了我的问题:

    我将在下面添加https://msdn.microsoft.com/en-us/library/windows/desktop/ms649781(v=vs.85).aspx 的完整帖子:

    在使用扩展的应用程序中使用 ComCtl32 版本 6, 插件,或带入进程的 DLL

    以下是使用扩展的应用程序示例。 Microsoft 管理控制台 (MMC) Windows Shell Microsoft Visual Studio ComCtl32.dll 版本 6 不完全向后兼容 因为修改了一些控件并添加了新控件。 使用版本 6 的通用控件可能需要更改代码 你的申请。如果应用程序使用由 第三方,如果您有兼容性,则无法更改扩展名 问题。以下步骤描述了如何应用视觉样式 在不影响扩展的情况下添加到您的应用程序。创建一个 清单并使您的应用程序能够使用视觉样式。包括 常用控件头文件如下:

    #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>
    

    将清单添加到应用程序的资源文件中,如下所示:

    ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"

    Winuser.rh 包含以下定义:

     #define RT_MANIFEST 24
     #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多