关于manifest将VC6.0转为XP风格

zyrr159487 2010-07-08 04:40:18
首先将以下文本保存为XpStyle.mainfest(后经实践,文件名和后缀是什么都无所谓)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

新建vc++工程,在资源选项卡(resourceview)中右键import->所有文件->找到刚才的 XpStyle.mainfest导入,资源类型名为24(必须是24),ok,然后修改IDR_241为1(必须是1)。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/glldc/archive/2008/07/14/2648945.aspx
我的代码以前是用VC6.0做的,后来转到VS2005上开发,风格却一直是传统风格,最后用上述方法转为XP风格。这个方法估计不少人都实现过。
我的问题是有没有第二种实现方法能达到这种效果,毕竟在文件夹下几个东西也是麻烦的
...全文
586 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovegame3 2012-12-14
  • 打赏
  • 举报
回复
学习了…………………………
WaistCoat09 2010-07-09
  • 打赏
  • 举报
回复
没啥好办法就是这么写的。
hastings 2010-07-09
  • 打赏
  • 举报
回复
.................................
wwgddx 2010-07-09
  • 打赏
  • 举报
回复
对于DLL IDR_241IDR_241为2为2, 对于ActiveX IDR_241IDR_241为2为3
-------------------------------------
这句写错了应该是
对于DLL IDR_241IDR_241必须为2, 对于ActiveX IDR_241IDR_241必须为3
wwgddx 2010-07-09
  • 打赏
  • 举报
回复
对于VC6的项目升级到VS2005环境下是需要添加
hurryboylqs(我想我可以)
说的那段代码才行, 如果是直接用VS2005新建的项目IDE会自动在stdafx.h中添加这些代码,不需要自己加了。 而且VS2005会自动生成.mainfest文件,所有也不需要我们添加了。

以上说的事EXE文件的方法,对于DLL及ActiveX会有点不同。
---------
找到刚才的 XpStyle.mainfest导入,资源类型名为24(必须是24),ok,然后修改IDR_241为1(必须是1)。
-------------
对于DLL IDR_241IDR_241为2为2, 对于ActiveX IDR_241IDR_241为2为3

当然如果在VS2005下面编译的项目也不需要我们关心这些了。
但对于DLL和ActiveX 项目,除了上面说的要在stdafx.h的最后面加代码外还需要在
#if _MSC_VER > 1000前面加上
#define ISOLATION_AWARE_ENABLED     1
才有效果

以上是我开发中的一些总结,如有不对的地方请指正!

zyrr159487 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hurryboylqs 的回复:]
在stdafx.h的最后面加上下面的几行代码即可:

C/C++ code

//xp样式支持
#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' process……
[/Quote]
实际上用manifest实现后还有个问题就是刷新的特别厉害,影响到了软件的画图。所以我才来看看有没有别的方法。
以上方法是可行的。不过加在stdafx.cpp里也是可以用的
m_tornado 2010-07-08
  • 打赏
  • 举报
回复
学习~
cnfixit 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hurryboylqs 的回复:]
在stdafx.h的最后面加上下面的几行代码即可:

C/C++ code

//xp样式支持
#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' process……
[/Quote]
标记楼上,:)
hurryboylqs 2010-07-08
  • 打赏
  • 举报
回复
在stdafx.h的最后面加上下面的几行代码即可:

//xp样式支持
#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

zyrr159487 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 soswaidao 的回复:]
直接把xxxx.mainfest保存为文件,把xxxx改成你程序名,把xxxx.mainfest放在你程序同一目录就可以了
[/Quote]
我的意思就是说不用mainfest
soswaidao 2010-07-08
  • 打赏
  • 举报
回复
直接把xxxx.mainfest保存为文件,把xxxx改成你程序名,把xxxx.mainfest放在你程序同一目录就可以了

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧