关于使用vc进行换肤设置和使用skinplusplus.dll美化界面
2010-05-12 21:32
453 查看
最近接触到的程序是使用NI的activex控件,基本上软件的外观和按钮都是一个模样,所以从网上搜索了一番,发现了几种关于使用vc来进行换肤的设置。
这是首先我想将的第一种方法是利用XPButton类实现XP风格的按钮。从网上找到别人写的而一个XPButton类。这个类比较流传,百度一下即可,接下来具体的步骤如下:
1.创建基于对话框的MFC工程假设命名为:XPButtonTest,将XPButton.cpp和XPButton.h放到当前工程目录,通过Project->Add to project->Add file to project将XPButton.cpp和XPButton.h导入到工程中。
2.在CXPButtonTestDlg.h添加头文件 #include "XPButton.h".
3.关闭工程,将工程目录下的.clw文件删除,重新打开工程,为对话框添加一个按钮控件。通过类向导为此按钮控件添加一个变量,变量类型(Variable type)选择CXPButton。在此步骤中如果不删除.clw文件,则在选择变量类型的时候下拉列表中不会出现CXPButton选项,可以选择CButton,然后手动到CXPButtonTestDlg.h中将变量类型修改为CXPButton。
4.编译运行就可以看到按钮具有XP风格。
注意:此方法只能使变量类型修改为CXPButton的按钮控件实现XP风格效果,对于没有作第三步的按钮,还保持原来的样式。
第二种方法就是关于.manifest文件了,这个在网上也是比较多的盛传的方法。这样有两种实现方式,一种是.manifest文件要与执行文件在一个目录下。具体做法如下:将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。
有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数或者InitCommonControlsEx函数从comctl32.dll中注册组件类。这一步在VB中是必须的,但是在VC(MFC程序)中,我们好像并没有调用这个函数,可是编译后的程序为什么还能实现XP风格呢?原因是MFC替我们做了这件事。如果我们是让MFC注册的窗口类,它会调用_AfxInitCommonControls函数,而_AfxInitCommonControls的主要操作就是把comctl32.dll装载进来,然后判断.dll文件中有没有InitCommonControlsEx函数,如果有就调用,没有则调用InitCommonControls,这样就真相大白了。
上述方法对于打包来说有些许的麻烦要把相应的文件打包在一起,那么有没有可以直接放在代码里进行编译实现的呢。答案是肯定的也就是我要说的第二种方式:.manifest文件还是要有的,只不过不是和.exe文件放在同一目录中,而是把它放到资源文件中,编译后生成.res文件,link后自然就和.exe文件“合”到一起了。那么首先让我看一下这个.manifest文件
相信你一眼就看到了其实这就是一个XML文件,打开记事本,复制上面的内容,然后存盘,文件名任意。然后在VC中新建一个MFC AppWizard(exe)工程,Document/View或Dialog均可,接着把XPStyle.manifest复制到工程所在目录,再用记事本或其它文本编辑工具手动修改工程目录下的资源文件(.rc),在文件最后加上一行:
1 24 “XPStyle.manifest”
在VC中编译并连接工程生成.exe可执行文件,运行一下看看。
哈哈绝对的可以啦
这里我还要多解释一下,最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。这样就好了,编译后的这个.exe文件拿到哪都可以,都是XP风格的界面,不用再依赖.manifest文件了,并且对于所有控件(不仅仅是Button)都可以实现XP风格。哦,当然了,必须在XP或2003系统下才可以。
接下来我要讲第三种方法了,这是一种比较简单的方法,这里我们需要从网上找到几个文件,一个SkinPlusPlus.DLL以及三个皮肤文件Minimized.ssk、SoftCrystal.ssk、XPCorona.ssk。有了这三个文件我们就可以美化我们程序的界面了。这里我想说的一点我今天做了测试我发现在xp系统下和在win2000系统下XPCorona.ssk的皮肤界面是不太一样的,xp下会显得更生动一点,2000下有点像java的界面。好了不罗嗦了咱们开始实现。
1、从网上找到SkinPlusPlus.DLL、SkinPlusPlus.H 还有就是SkinPlusPlus.lib,将.h和.lib放到程序的代码目录下,Minimized.ssk、SoftCrystal.ssk、XPCorona.ssk分别放到代码目录下和执行目录下,SkinPlusPlus.DLL放到执行目录下。
2、将SkinMagicLib.lib添加到工程中:Project->Settings->Link在Object/libary modyles:编辑框中输入 SkinMagicLib.lib
3、在程序找到你的APP类在其虚函数InitInstance()中,
看一下效果如下(XPCorona.ssk):
=
这是首先我想将的第一种方法是利用XPButton类实现XP风格的按钮。从网上找到别人写的而一个XPButton类。这个类比较流传,百度一下即可,接下来具体的步骤如下:
1.创建基于对话框的MFC工程假设命名为:XPButtonTest,将XPButton.cpp和XPButton.h放到当前工程目录,通过Project->Add to project->Add file to project将XPButton.cpp和XPButton.h导入到工程中。
2.在CXPButtonTestDlg.h添加头文件 #include "XPButton.h".
3.关闭工程,将工程目录下的.clw文件删除,重新打开工程,为对话框添加一个按钮控件。通过类向导为此按钮控件添加一个变量,变量类型(Variable type)选择CXPButton。在此步骤中如果不删除.clw文件,则在选择变量类型的时候下拉列表中不会出现CXPButton选项,可以选择CButton,然后手动到CXPButtonTestDlg.h中将变量类型修改为CXPButton。
4.编译运行就可以看到按钮具有XP风格。
注意:此方法只能使变量类型修改为CXPButton的按钮控件实现XP风格效果,对于没有作第三步的按钮,还保持原来的样式。
第二种方法就是关于.manifest文件了,这个在网上也是比较多的盛传的方法。这样有两种实现方式,一种是.manifest文件要与执行文件在一个目录下。具体做法如下:将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。
有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数或者InitCommonControlsEx函数从comctl32.dll中注册组件类。这一步在VB中是必须的,但是在VC(MFC程序)中,我们好像并没有调用这个函数,可是编译后的程序为什么还能实现XP风格呢?原因是MFC替我们做了这件事。如果我们是让MFC注册的窗口类,它会调用_AfxInitCommonControls函数,而_AfxInitCommonControls的主要操作就是把comctl32.dll装载进来,然后判断.dll文件中有没有InitCommonControlsEx函数,如果有就调用,没有则调用InitCommonControls,这样就真相大白了。
上述方法对于打包来说有些许的麻烦要把相应的文件打包在一起,那么有没有可以直接放在代码里进行编译实现的呢。答案是肯定的也就是我要说的第二种方式:.manifest文件还是要有的,只不过不是和.exe文件放在同一目录中,而是把它放到资源文件中,编译后生成.res文件,link后自然就和.exe文件“合”到一起了。那么首先让我看一下这个.manifest文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="XP style manifest" processorArchitecture="x86" version="1.0.0.0" type="win32"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>
相信你一眼就看到了其实这就是一个XML文件,打开记事本,复制上面的内容,然后存盘,文件名任意。然后在VC中新建一个MFC AppWizard(exe)工程,Document/View或Dialog均可,接着把XPStyle.manifest复制到工程所在目录,再用记事本或其它文本编辑工具手动修改工程目录下的资源文件(.rc),在文件最后加上一行:
1 24 “XPStyle.manifest”
在VC中编译并连接工程生成.exe可执行文件,运行一下看看。
哈哈绝对的可以啦
这里我还要多解释一下,最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。这样就好了,编译后的这个.exe文件拿到哪都可以,都是XP风格的界面,不用再依赖.manifest文件了,并且对于所有控件(不仅仅是Button)都可以实现XP风格。哦,当然了,必须在XP或2003系统下才可以。
接下来我要讲第三种方法了,这是一种比较简单的方法,这里我们需要从网上找到几个文件,一个SkinPlusPlus.DLL以及三个皮肤文件Minimized.ssk、SoftCrystal.ssk、XPCorona.ssk。有了这三个文件我们就可以美化我们程序的界面了。这里我想说的一点我今天做了测试我发现在xp系统下和在win2000系统下XPCorona.ssk的皮肤界面是不太一样的,xp下会显得更生动一点,2000下有点像java的界面。好了不罗嗦了咱们开始实现。
1、从网上找到SkinPlusPlus.DLL、SkinPlusPlus.H 还有就是SkinPlusPlus.lib,将.h和.lib放到程序的代码目录下,Minimized.ssk、SoftCrystal.ssk、XPCorona.ssk分别放到代码目录下和执行目录下,SkinPlusPlus.DLL放到执行目录下。
2、将SkinMagicLib.lib添加到工程中:Project->Settings->Link在Object/libary modyles:编辑框中输入 SkinMagicLib.lib
3、在程序找到你的APP类在其虚函数InitInstance()中,
#ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif后面添加InitSkin(“XPCorona.ssk”) 这里可以根据喜好放置 Minimized.ssk、SoftCrystal.ssk、XPCorona.ssk,然后重载app的ExitInstance函数添加ExitSkin()函数。编译生成可执行exe文件运行你会发现不一样界面,是不是很不不错,比较美观。
看一下效果如下(XPCorona.ssk):
=
相关文章推荐
- 使用skin++进行MFC界面美化范例
- 使用skin++进行MFC界面美化范例
- VC下使用Skinmagic进行界面美化
- 如何使用SkinMagic2.2来为VC程序界面进行美化
- VC使用VCLSkin美化界面
- VC界面设计(破解版skin++皮肤库使用)
- 使用SkinMagic美化VC界面
- 使用SkinMagic Toolkit美化界面
- VC中使用GIF格式图片美化界面
- Ubuntu 13.04设置root用户登录图形界面与在Ubuntu 12.10中使用root进行登录方法
- 关于使用vc++调用matlab生成的dll传递数组的问题
- VC界面设计(破解版skin++皮肤库使用)
- 关于使用vc++调用matlab生成的dll传递数组的问题
- vc中使用免费界面换肤软件 USkin
- 直接使用默认设置进行打印:(3)使用VC开发ActiveX控件实现打印中文字符串
- 使用SkinMagic Toolkit美化界面
- 使用SkinMagic美化VC界面
- VC工程-设置里的使用MFC作为共享的DLL和使用MFC作为静态链接库 二者区别
- 使用SkinMagic美化VC界面
- 使用Skin#美化界面