SkinLoad程序界面换肤工具
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程序界面换肤工具相关推荐
- VC应用程序的界面换肤工具集合
本人由于急着赶一个软件的说明文档,急需修改软件的界面,写代码显然是来不及的,所以在网上搜了好多换肤工具来试用,试用好几个,其中比较成功的有两个,其他的由于时间有限,没有仔细摸索,现不管三七二十一通通集 ...
- 使用免费界面换肤软件 USkin
使用免费界面换肤软件 USkin 作者:thirdwolf 下载源代码 一.介绍 我们都知道,Skin以前是一项比较难的技术.但至从WindowsXP推出以来,Skin或者说Theme变得很普遍.虽然 ...
- 界面换肤软件学习笔记
动态库实现界面换肤 一:动态载入DLL并获取DLL中函数 //在全局区创建一个函数指针 typedef void (_stdcall* funShowDlg)();//获取动态库,LoadLibrar ...
- 微信小程序 实现换肤功能
参考链接: (1)微信小程序实现换肤功能 https://www.jb51.net/article/136445.htm (2)微信小程序实现换肤功能 https://blog.csdn.net/qq ...
- 小程序服务器换肤,微信小程序实现换肤功能
pc或者移动端实现换肤功能还是比较简单的,大致就是需要换肤的css,还有正常的css:把当前皮肤类型存入本地:然后通过js读取并判断当前应该加载哪套css. 由于微信小程序没有操作wxss的api,所 ...
- Qt之界面换肤的两种方式
概述 像现在市面上有很多软件都有换肤功能,例如:QQ.360.迅雷等.换肤其实很简单,并没有想象中那么难,下面介绍两种实现换肤的方式,仅供参考! 方式一 1. 实现原理 创建多个QSS文件 首先,根据 ...
- SkinMagic——MFC界面换肤美化
SkinMagic--MFC界面换肤美化(完整步骤) 一. 下载并解压SkinMagic https://pan.baidu.com/share/link?shareid=1666255608& ...
- 【QT学习】QSS样式表实现界面换肤(图文详解+源码)
文章目录 前言 一.实现效果 二.QSS简介及用法 1.什么是QSS? 2.怎么使用QSS? 三.QSS用法一:单个控件调用setStyleSheet函数 四.QSS用法二:编写单个界面.qss文件的 ...
- c语言中用qt写换肤,让Qt应用程序支持换肤(Skin)功能
Qt程序一直给人的印象是正规的GUI程序的模样.在嵌入式Linux下,Qtopia的桌面看起来跟WinCE桌面没有什么两样.相对IPHONE那样的漂亮界面.实在没有什么吸引力. 因此很多嵌入式开发人员 ...
最新文章
- SAP QM QM11显示Quality Notification List
- WPS版excel怎样核对两表数据和文本不一致之处
- idea使用junit测试_在JUnit测试中使用Builder模式
- vue php企业站案例,vue 开发企业微信整合案例分析
- TOP10十大GPS导航手机(有车一族必备手机)
- 解决在Linux下安装Oracle时的中文乱码问题
- 7天学会python_Python学习:第七天
- 欧姆龙PLC程序 本程序包括有欧姆龙CP1H脉冲程序案例,威纶通触摸屏程序
- 医学影像常用Python包
- Markdown Viewer 插件安装(使用谷歌浏览器查看md文件格式
- CSS实现平行四边形
- 面试真题纠错(京东、爱奇艺)
- Linux 要不要防病毒软件或防火墙
- 书法拓片matlab,拓墨书法作品(拓片)的具体操作方法和步骤?
- sqlserver清除换行符和回车符\r\n
- 改版后的51la统计,与旧版有何区别呢?
- Vuforia examples 简介
- 机器人企业如何在激流勇进的市场中,深耕落地,突出重围?
- redhat7.6添加中文语言支持
- tcas计算机历史故障,TCAS及ATC相关故障处理的讨论.doc