VC无负担实现XP风格界面

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exeXP2003(必须启动Themes服务)下运行时就会呈现XP界面风格。

有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数(已经废除,不建议使用)或者InitCommonControlsEx函数从comctl32.dll中注册组件类。这一步在VB中是必须的,但是在VCMFC程序)中,我们好像并没有调用这个函数,可是编译后的程序为什么还能实现XP风格呢?原因是MFC替我们做了这件事。如果我们是让MFC注册的窗口类,它会调用_AfxInitCommonControls函数,而_AfxInitCommonControls的主要操作就是把comctl32.dll装载进来,然后判断.dll文件中有没有InitCommonControlsEx函数,如果有就调用,没有则调用InitCommonControls,到此真相大白。可能有人和我一样,看着以“afx”开头的窗口类名称很不舒服,于是喜欢自己注册窗口类,但在我们注册自己的窗口类时一定要确保调用过InitCommonControlsEx函数,这点一定要记得,如果忘记的话你将会看到一个空白的窗口。

说了这么多,有点跑题了,呵呵。现在回到正题。我上面提到的方法很多网站上都有介绍,但是却有一个致命的缺点,就是必须有那个.manifest文件如影随形,exe文件到哪,它就得到哪,这当然是我们不愿意看到的。有没有办法能把它“合”到exe文件中呢?答案是肯定的,这也正是本文题目中“无负担”三个字的意思。

当然了,那个.manifest文件还是要有的,只不过不是和.exe文件放在同一目录中,而是把它放到资源文件中,编译后生成.res文件,link后自然就和.exe文件“合”到一起了。

首先,请出.manifest文件:

 

VS2019和boost编译支持xp系统 前言 ​ 最近要做个守护程序来监听一个http程序,故想到了windows的服务程序。因为大量用户使用xp系统,所以要兼容xp。 ​ 我用的是vs2019和boost库。两个都需要设置,才能保证程序在xp下能跑。 vs2019 设置 ​ 根据网上的资料,先添加支持xp的编译组件。 我之前没有安装VS 2017 x64/x86生成工具,导致程序一直运行不起来。 把项目的属性的平台工具集改成v141xp,这一步应用之后,vs会自动帮你修改一些参数。 参考文章:VS2019怎样编译出可以在WinXP上运行的ex 阅读详情

相关推荐

如何指定使用哪个版本的ComCtl32.dll

https://bbs.csdn.net/topics/392553943 将如下内容加入原文件: #ifdef_UNICODE #ifdefined_M_IX86 #pragmacomment(linker,"/manifestdependency:\"type='win32'name='Microsoft.Windows.Common-Controls'version='6.0.0.0'processorArchitecture='x86'publicKeyToken='65...

qq_40353000的博客 714

VS2019 编译生成Xp系统可执行程序

必须勾选两项下图两项。

weixin_48257887的博客 332

VS2019支持xp

安装的时候选择如下,注意第一个框C++桌面程序的 “MSVC141 windows xp支持”不要选择,要选择下面的,单个组件的

joinpark的专栏 4106

XPManifest控件的作用与用法

程序里放上了这个之后Delphi在编译时就会自动使用Xp里面最新的共用控见,那样的话你的程序就支持Xp主题了,当然,这个只在Xp下有效,因为Xp以外的Windows没有支持Xp特效的共用控见。 TXPManifest源代码中最重要的那句是: {$WEAKPACKAGEUNIT ON} 和 {$R WindowsXP.res} 前面那句是...

weixin_30871905的博客 708

VC6无负担实现XP风格界面

VC6无负担实现XP风格界面 关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exeXP或2003(必须启动Themes服务)下运行时就会呈现XP

浩然也空 的专栏 760

VC负担实现XP风格界面(转)

   VC负担实现XP风格界面function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://w

xilyu的专栏 2101

VC负担实现XP风格界面 [转]

  关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exeXP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。有件事情必须说一下

敟當柒秒哋魚 654

[转]VC负担实现XP风格界面

VC负担实现XP风格界面 有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数(已经废除,不建议使用)或者InitCommonControlsEx函数从comctl32.dll中注册组件类。这一步在VB中是必须的,但是在VCMFC程序)中,我们好像并没有调用这个函数,可是编译后的程序为什么还能实现XP风格呢?原因是MFC替我们做了这...

weixin_30702413的博客 103
上一篇: 利用LineDDA函数做简单动画
下一篇: 利用底层键盘钩子屏蔽任意按键
goodname008
博客等级 码龄23年 60粉丝 23原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值