Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > VC6项目移植到VS2005时的一个细微问题
【标  题】:VC6项目移植到VS2005时的一个细微问题
【关键字】:VC6,VS2005
【来  源】:http://www.cppblog.com/wlwlxj/archive/2007/02/28/19063.html

VC6项目移植到VS2005时的一个细微问题

Your Ad Here VC6项目移植到VS2005时的一个细微问题 - 万星星 - C++博客

万星星

天才??不是,是勤奋...
师夷之技以制夷 吾尝终日而思矣,不如须臾之所学也
喝碗孟婆汤,踏过奈何桥,涅槃
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.

VC6项目移植到VS2005时的一个细微问题

我有一个以前的用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 万连文 阅读(49) 评论(0)  编辑 收藏 引用 所属分类: 乱七八糟

DWT分析和综合实际过程:【上一篇】
friend随笔:【下一篇】
【相关评论】
没有相关评论
【发表评论】
姓名:
邮件:
随机码*
评论*
      
|  首 页  |  版权声明  |  联系我们   |  网站地图  |
CopyRight © 2004-2007 软讯网络 All Rigths Reserved.