【问题标题】:Win32 Visual Styles backwards compatibility?Win32 视觉样式向后兼容?
【发布时间】:2012-10-04 17:09:35
【问题描述】:

当我像这样在我的程序中嵌入视觉样式清单时:

// Embed visual style XML manifest
#pragma comment(linker,                           \
    "\"/manifestdependency:type='Win32'"          \
    "   name='Microsoft.Windows.Common-Controls'" \
    "   version='6.0.0.0'"                        \
    "   processorArchitecture='*'"                \
    "   publicKeyToken='6595b64144ccf1df'"        \
    "   language='*'\""                           \
)

// Link common controls library
#pragma comment(lib, "ComCtl32.lib")

这是否意味着我的程序只能在 Windows XP 上运行?或者,如果计算机上没有视觉样式,他们是否只会使用操作系统的默认样式?我问是因为我在使用 Visual Studio 2008 开发的程序中启用了视觉样式,并且我想知道可以运行它的最早版本的 Windows 是什么。我是否应该检查WINVER 以查看他们是否正在运行支持视觉样式的版本?如果是这样,我应该在预处理器中检查什么版本号。我想知道的另一件事是,如果没有视觉样式,我可以运行我的程序的最低版本是什么?

【问题讨论】:

    标签: winapi operating-system version platform visual-styles


    【解决方案1】:

    这是否意味着我的程序只能在 Windows XP 上运行?或者如果视觉 样式不在电脑上会不会只用操作 系统默认样式?

    后者是正确的,documentation 定义了确切的行为(重点是我的):

    如果您希望您的应用程序使用视觉样式,您必须添加一个 应用程序清单或编译器指令,表明 ComCtl32.dll 版本 6如果可用,应该使用

    同一页面中的另一部分描述了您在向后兼容性方面应注意的一些事项:Making Your Application Compatible with Earlier Versions of Windows。关于视觉风格,它指出:

    大部分视觉风格架构旨在简化 继续在早期版本的 Windows 上发布您的产品 不支持改变控件的外观。

    【讨论】:

      【解决方案2】:

      这不是问题。清单只是告诉 Windows 您需要第 6 版的通用控件 DLL。存储在并行缓存 (c:\windows\winsxs) 中的缓存,而不是存储在 c:\windows\system32 中的旧缓存。并行缓存是一种DLL Hell 对策,它可以存储同名的不同版本的DLL。

      清单对早期版本的 Windows 没有影响,那些版本对清单一无所知,所以不知道要查找它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 2020-07-22
        • 1970-01-01
        • 2012-03-13
        相关资源
        最近更新 更多