SkinLoad程序界面换肤工具
作者:耿海增

下载本文示例工程

版本更新SkinLoad v0.3

本文在VC知识库链接

说明:SkinLoad是一个给程序换肤的工具,通过几个简单的函数调用就可以给你的应用程序加上漂亮的皮肤,包括所有的系统对话框。通过SkinLoadMaker皮肤编辑工具,可以自己定制皮肤。

界面效果图如下:

如何在程序中实现换肤:

一、静态链接动态库

需要三个文件:"SkinLoadLib.h","SkinLoad.lib","SkinLoad.dll"

1、添加 "SkinLoadLib.h"、"SkinLoad.lib"文件到工程中
2、在App类中包含头文件:

#include "SkinLoadLib.h"

3、在App类的 InitInstance()函数中初始化动态库,加载皮肤文件:

InitSkinLoad(GetCurrentThreadId());
LoadSkin("xp_normal.skin"); //可以放在任何地方,如果在不同的文件中,要包含路径

4、在App类的 ExitInstance() 中卸载动态库,释放使用的资源:

ExitSkinLoad();

说明:这样使用方便,缺点是程序运行时必须保证 SkinLoad.dll 文件存在,否则程序无法运行

二、动态加载动态库

1、在App类的 InitInstance()函数中加载动态库。
定义一个变量保存加载的动态库句柄,可以是全局的,也可以是App类的成员变量

HINSTANCE m_hDllSkin;
m_hDllSkin = LoadLibrary("SkinLoad.dll");

2、在App类的 InitInstance()函数中调用初始化函数和加载皮肤文件的函数

if(m_hDllSkin != NULL)
{
typedef int  (* INITSKIN)(DWORD dwThreadId);
typedef bool  (* LOADSKIN)(char* cPath);
INITSKIN pInitSkin = (INITSKIN)GetProcAddress(m_hDllSkin,"InitSkinLoad");
LOADSKIN pLoadSkin = (LOADSKIN)GetProcAddress(m_hDllSkin,"LoadSkin");
if(pInitSkin != NULL && pLoadSkin != NULL)
{
(*pInitSkin)(GetCurrentThreadId());
(*pLoadSkin)("xp_normal.skin");
}
}

3、在App类的 ExitInstance() 中卸载动态库

if(m_hDllSkin != NULL)
{
typedef bool (* EXITSKIN)();
EXITSKIN pExitSkin = (EXITSKIN)GetProcAddress(m_hDllSkin,"ExitSkin");
if(pExitSkin != NULL)
{
(*pExitSkin)();
}
FreeLibrary(m_hDllSkin);
}

说明:这样使用比较麻烦,要手动加载动态库,还要自己获取函数指针再用。但是这样可以在程序中判断所需的 SkinLoad.dll 动态库是否存在,不至于造成程序无法运行

皮肤制作工具 SkinLoadMaker 使用说明:

程序自带一个皮肤文件,制作自己的皮肤文件时只要修改相应的地方就可以了。如果不做任何修改也可以直接生成一个皮肤文件,和我的 xp_normal.skin 是一样的。运行 SkinLoadMaker 时,会产生一个Temp文件夹,里面放的是程序使用的图片,大家照着格式改就可以了。
说明:
标题栏背景图:要求有两个,一个是正常状态的,一个是程序失去焦点的,按上下顺序放在一张图中
标题栏按钮:包括最小化、最大化、恢复、关闭。每种一幅图,包含四张小图,分别是Normal、Mouse On、Mouse Down、Disabled
按钮位图:可以不使用。也是四个状态放到一张图中。分别是Normal、Mouse On、Mouse Down、Disabled

(全文完)

SkinLoad程序界面换肤工具相关推荐

  1. VC应用程序的界面换肤工具集合

    本人由于急着赶一个软件的说明文档,急需修改软件的界面,写代码显然是来不及的,所以在网上搜了好多换肤工具来试用,试用好几个,其中比较成功的有两个,其他的由于时间有限,没有仔细摸索,现不管三七二十一通通集 ...

  2. 使用免费界面换肤软件 USkin

    使用免费界面换肤软件 USkin 作者:thirdwolf 下载源代码 一.介绍 我们都知道,Skin以前是一项比较难的技术.但至从WindowsXP推出以来,Skin或者说Theme变得很普遍.虽然 ...

  3. 界面换肤软件学习笔记

    动态库实现界面换肤 一:动态载入DLL并获取DLL中函数 //在全局区创建一个函数指针 typedef void (_stdcall* funShowDlg)();//获取动态库,LoadLibrar ...

  4. 微信小程序 实现换肤功能

    参考链接: (1)微信小程序实现换肤功能 https://www.jb51.net/article/136445.htm (2)微信小程序实现换肤功能 https://blog.csdn.net/qq ...

  5. 小程序服务器换肤,微信小程序实现换肤功能

    pc或者移动端实现换肤功能还是比较简单的,大致就是需要换肤的css,还有正常的css:把当前皮肤类型存入本地:然后通过js读取并判断当前应该加载哪套css. 由于微信小程序没有操作wxss的api,所 ...

  6. Qt之界面换肤的两种方式

    概述 像现在市面上有很多软件都有换肤功能,例如:QQ.360.迅雷等.换肤其实很简单,并没有想象中那么难,下面介绍两种实现换肤的方式,仅供参考! 方式一 1. 实现原理 创建多个QSS文件 首先,根据 ...

  7. SkinMagic——MFC界面换肤美化

    SkinMagic--MFC界面换肤美化(完整步骤) 一. 下载并解压SkinMagic https://pan.baidu.com/share/link?shareid=1666255608& ...

  8. 【QT学习】QSS样式表实现界面换肤(图文详解+源码)

    文章目录 前言 一.实现效果 二.QSS简介及用法 1.什么是QSS? 2.怎么使用QSS? 三.QSS用法一:单个控件调用setStyleSheet函数 四.QSS用法二:编写单个界面.qss文件的 ...

  9. c语言中用qt写换肤,让Qt应用程序支持换肤(Skin)功能

    Qt程序一直给人的印象是正规的GUI程序的模样.在嵌入式Linux下,Qtopia的桌面看起来跟WinCE桌面没有什么两样.相对IPHONE那样的漂亮界面.实在没有什么吸引力. 因此很多嵌入式开发人员 ...

最新文章

  1. SAP QM QM11显示Quality Notification List
  2. WPS版excel怎样核对两表数据和文本不一致之处
  3. idea使用junit测试_在JUnit测试中使用Builder模式
  4. vue php企业站案例,vue 开发企业微信整合案例分析
  5. TOP10十大GPS导航手机(有车一族必备手机)
  6. 解决在Linux下安装Oracle时的中文乱码问题
  7. 7天学会python_Python学习:第七天
  8. 欧姆龙PLC程序 本程序包括有欧姆龙CP1H脉冲程序案例,威纶通触摸屏程序
  9. 医学影像常用Python包
  10. Markdown Viewer 插件安装(使用谷歌浏览器查看md文件格式
  11. CSS实现平行四边形
  12. 面试真题纠错(京东、爱奇艺)
  13. Linux 要不要防病毒软件或防火墙
  14. 书法拓片matlab,拓墨书法作品(拓片)的具体操作方法和步骤?
  15. sqlserver清除换行符和回车符\r\n
  16. 改版后的51la统计,与旧版有何区别呢?
  17. Vuforia examples 简介
  18. 机器人企业如何在激流勇进的市场中,深耕落地,突出重围?
  19. redhat7.6添加中文语言支持
  20. tcas计算机历史故障,TCAS及ATC相关故障处理的讨论.doc

热门文章

  1. 斜坡增益原理与实现方法
  2. 潍坊风尚米兰能耗监测系统的应用-安科瑞耿敏花
  3. 混凝土墙开洞_混凝土剪力墙开洞最好的方法
  4. opencv HSV色彩空间 追踪特定颜色
  5. 高中数学必修2:平面解析几何之直线与圆、圆与圆的位置关系
  6. i2c协议解读(附读写过程c代码)
  7. 科普贴 印度(农村)生活
  8. 老吕架构-2021年文章精选
  9. Emlog程序小刀娱乐网同款顶踩插件
  10. 实现微信定时发送消息解决工作订餐的问题