2012-10-04 46 views
1

当我嵌入视觉样式体现在我的计划是这样的:Win32视觉样式向后兼容性?

// 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以查看他们是否运行支持视觉样式的版本?如果是这样,我应该在预处理器中检查哪个版本号。我想知道的另一件事是,没有视觉样式,我可以运行我的程序的最低版本是什么?

回答

6

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

后者是真实的documentation定义确切行为(重点是我的):

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

同一页面中的另一部分描述了一些您应该注意的向后兼容性问题:Making Your Application Compatible with Earlier Versions of Windows。在视觉样式,它指出:

大部分的视觉风格建筑的设计,使之简单 继续出货产品在早期版本的Windows是做 不支持改变控件的外观。

4

这不是问题。清单只是告诉Windows你需要公共控件DLL的第6版。存储在并行缓存(c:\ windows \ winsxs)中的文件,而不是存储在c:\ windows \ system32中的旧文件。并行缓存是一个DLL地狱对抗措施,它可以存储具有相同名称的不同版本的DLL。

该清单对早期版本的Windows没有影响,这些版本不知道有关清单的任何内容,所以不知道如何查找它们。