一、 概述

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);  // 设置背景色为黑色

Skin++ For VS2010 使用教程相关推荐

  1. win7+vs2010+opnet教程

    win7+vs2010+opnet教程 一.VS2010(c++编译环境):(VS2010安装过程略) 右键"计算机",选择"属性". 单击"高级系统 ...

  2. 最全VS2010初级教程学习手册

    目录 <Visual C++ 2010入门教程>系列二:安装.配置和首次使用VS2010 1 写在前面        第一章 关于Visual Studio.VC和C++的那些事 1 第二 ...

  3. opencv+vs2010安装教程

    转自http://blog.csdn.net/poem_qianmo/article/details/19809337 好的文章就转下,防止博主删了就再也看不到了,菜鸟学习学习. 本系列文章由@浅墨_ ...

  4. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  5. 一个高中生的编程自学经历

    年轻时的linus 最近,在看雪论坛上看到了一个高中生分享的自学经历,想起我第一次学习编程时候,当年高考后,由于大学选了计算机专业,就好奇去了看一本c语言编程(书是亲戚的)书籍,好奇心驱使我们主动去探 ...

  6. 伤仲永?一个高中生的自学编程经历。看完能少走很多弯路!

    我有很大的研究技术的热情,今年18.从初中开始,就已经种下了自由控制电脑这种欲望的种子.到了高一,我第一次从信息技术课本上看到编程二字,并且书上带走一个vb写的画二次函数图像的小例子,但是家里没有电脑 ...

  7. 一个高中生的自学编程经历

    我有很大的研究技术的热情,今年18,从初中开始,就已经种下了自由控制电脑这种欲望的种子. 到了高一,我第一次从信息技术课本上看到编程二字,并且书上带走一个vb写的画二次函数图像的小例子,但是家里没有电 ...

  8. Xamarin Mono For Android

    Xamarin Mono For Android 4.6.07004 完整离线安装破解版(C#开发Android.IOS工具) Xamarin是由Miguel de Icaza成立的一家新的独立公司, ...

  9. 手把手教你开发Pro/TOOLKIT应用程序(一)

    前言 本教程采用VS2008 + Pro/E Wildfire5.0来讲解怎样开发Pro/TOOLKIT应用程序. 开发Pro/TOOLKIT应用程序时,Pro/E和Visual Studio的版本需 ...

  10. 鸡啄米vc++2010系列27(列表视图控件List Control 上)

    列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁.直观,在实际应用中能为用户带来方便. 列表视图控件是对前面讲到 ...

最新文章

  1. 摩卡签约印尼五大运营商之一CSM,进军东南亚市场
  2. java iostream_【JAVA】IOStream
  3. php ldap 创建用户,PHP LDAP获取作为组成员的成员的用户详细信息
  4. Java 编程的动态性,第3部分: 应用反射--转载
  5. 训练损失越来越大_无需contrastive学习,微软亚研提基于实例分类无监督预训练方法...
  6. Java生鲜电商平台-高并发核心技术订单与库存实战
  7. css_oneday
  8. C++的静态成员函数指针
  9. 快速幂、矩阵快速幂、快速乘法
  10. linq to sql查询中返回linq自动建立的实体类型)
  11. Linux系统管理命令之管理文件和目录
  12. 入门机器学习(十四)--编程作业-支持向量机(Python实现)
  13. “使用 iNalyzer 分析应用程序的类结构”
  14. python selenium爬虫工具
  15. google翻译自动检测语言翻译成中文
  16. ubuntu刷新DNS
  17. 发送文件夹不存在或被删除
  18. Oracle用户管理的备份与恢复(冷热)
  19. 集成iSCSI和FC存储的五种方法
  20. 安全知识、工具网址集锦(持续更新)

热门文章

  1. centos7 pe系统安装_u盘pe修复系统引导u盘安装centos7 无法开机
  2. 使用COMSOL提取指定时刻固体火箭发动机内的流体域(观点)
  3. 8位数控分频器的设计_基于FPGA的通用数控分频器的设计与实现
  4. 仙剑制作人教你成为游戏人
  5. java编写简单聊天界面_java实现简单聊天室单人版
  6. shiro权限架作战
  7. Java8 map转list集合
  8. html提示版本过低升级,IE8浏览器提示版本过低怎样升级呢?
  9. 在低版本浏览器内核中适配replaceAll
  10. 2021亚太杯数学建模C题全网成品论文+代码+详细思路+数据+参考文献