万星星
一个吃软饭的男人!!!!!我只想写程序####
师夷之技以制夷 吾尝终日而思矣,不如须臾之所学也
喝碗孟婆汤,踏过奈何桥,涅槃
I've been programming since I was 21. Started with C++, looked at Java, keen on Visual Basic and Visual C++, thinking about .NET and C#.^_^,very ridiculous.
posts - 140,  comments - 845,  trackbacks - 0
我有一个以前的用vc6开发的小示例,移植到vs2005上去,今天突然发现了一个小问题:直接使用vs2005生成的项目编译后工具栏的风格是xp风格(图1),而移植上去的项目工具栏风格却是2k风格(图2)。

(图1)

(图2)
当然我很清楚,这是manifest导致的问题,于是自然在vs2005直接生产的项目里去寻找manifest文件,结果没发现,转至项目目录下也没有发现。感觉很是奇怪,于是我全项目搜索“manifest”,发现stdafx.h里有如下代码:
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
记得在vs2003里面是默认生成一个manifest,不同项目里面的manifest内容大同小异。而在vs2005里面是通过一个扩展的#pragma comment指令来生成manifest,该指令在vs2003中是无效的。编译器内部具体采用什么手段就不得而知,也无暇细究,不过大概思想就是强制使用高版本的common control达到漂亮的显示效果。我在c6转到vs2005的工程对应位置加上后,即达到了图1的效果,包括所有的common控件都切换到了xp风格。
这里注意几点:
1、必须使用unicode编译,否则无法达到效果。vs2005默认生产的项目是基于unicode编译的。至于网上所说的手动添加manifest文件的方法我没有试验过。
2、上面的#pragma comment指令只在vs2005中有效,在vs2003里面必须手动把编译字节码改为unicode才可使common控件变为xp风格。
3、common控件的xp风格最终还是取决于操作系统还有就是当前的显示主题,在2k的机器上是无法显示出xp风格的,在xp以上的机器上如果选择2k经典主题还是无法显示出xp风格。
posted on 2007-02-28 19:36 万连文 阅读(2138) 评论(0)  编辑 收藏 引用 所属分类: 乱七八糟


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
.NET频道  博客园社区  闪存
网站导航:



简历下载
联系我

<2007年2月>
28293031123
45678910
11121314151617
18192021222324
25262728123
45678910

常用链接

留言簿(45)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜