Skin++ For VS2010 使用教程

来源:互联网 发布:cv 怎么写 知乎 编辑:程序博客网 时间:2024/05/29 15:16

一、 概述

Skin++是一款通用的软件换肤套件,目前支持各种版本操作系统,Windows2000、WindowsXP、Windows7。支持各种开发语言,VC、VB、C#、PB、Delphi、C++Builder、易语言。Skin++ 目前已经拥有数量众多的用户,并且有很多的国内外大公司客户。无论其换肤的效果还是程序本身的稳定性,都堪称一流。要做出漂亮风格的界面,使用Skin++变得非常简单,只要一行代码,就能让你的程序彻底换肤,并拥有动态换肤的功能。


二、 VC++中的使用

1、创建一个多文档程序

2、拷贝Skin++相关文件

到安装的目录下面找到Skin++ v2.0.1目录中的lib文件夹,将其中的SkinPPWTL.dll   、SkinPPWTL.h和SkinPPWTL.lib 拷贝到刚才创建的工程目录中。SkinPPWTL.h添加工程中。

到安装的目录下面找到Skins目录,我们选择AquaOS作为我们测试皮肤,把AquaOS.ssk皮肤文件拷贝到当前的工程目录中来。

3、工程设置

在(VS2010)"Project->Settings->Link->Object/library(输入)->附加依赖项"中加入SkinPlusPlusDLL.lib 

4、包含Skin++头文件

在StdAfx.h中写上下面两句

#include "SkinPPWTL.h"
#pragma comment(lib,"SkinPPWTL.lib")

5、加载Skin++代码

进入CxxxApp::InitInstance(),在该函数的第一句写上:skinppLoadSkin(_T("AquaOS.ssk"));

skinppLoadSkin有两参数,第一个参数为皮肤路径,如果直接写皮肤名称,那么程序运行的时候,会到程序所在的目录下去查找,如果在该目录下没有该皮肤文件,那么加载Skin++失败,运行程序将看不到效果。该参数接受皮肤的绝对路径和相对路径。第二个参数一般用户不用填写,但对于想要把皮肤文件释放到一个目录里加载Skin++以提高加载速度的情况下有用。这个功能对于正式版用户可用。免费版不支持该功能。

6、卸载Skin++代码

在程序的卸载函数中加入ExitInstance()
skinppExitSkin(); //退出界面库,做清理工作。


三、使用Skin++其他问题

1、控件禁用皮肤

针对Skin++皮肤效果是针对整个项目的,无法实现在此基础上对单独的控件进行重绘,最终显示的效果存在 字体普遍偏小,滑动控件刷新存在重叠的问题。

解决方法: 调用skinppSetNoSkinHwnd(GetDlgItem(IDC_xxxx)->m_hWnd,true);

上述函数可以实现该控件的禁用皮肤,利用字体类CFont的SetFont可以改变字体大小,但随之而来带来了禁用的控件与皮肤存在明显对比,视觉效果太差。可以考虑重载,加入以下代码:

if (pWnd->GetDlgCtrlID()==IDC_xxxx|)

                pDC->SetTextColor(RGB(220,220,220));  //字体颜色
pDC->SetBkMode(TRANSPARENT); //设置字体背景为透明  
return (HBRUSH)::GetStockObject(HOLLOW_BRUSH );  // 设置背景色为透明

        }

2、显示控件刷新存在重叠的问题

解决办法:先隐藏,后显示即可

GetDlgItem(IDC_xxx)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_xxx)->ShowWindow(SW_SHOW);

3、闪屏问题不太好解决,产生的原因终究是视图刷新速度太快(上面第二点未完全解决问题带来的弊端)

暂时通过在OnCtlColor()函数中将设置背景色为黑色或不设置控件背景色:

return (HBRUSH)::GetStockObject(BLACK_BRUSH);  // 设置背景色为黑色 

1 0
原创粉丝点击