当前位置: 首页 > 图文教程 > 开发语言 > VC++ > SkinLoad程序界面换肤工具

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 SkinLoad程序界面换肤工具


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 65 ::
收藏到网摘: n/a

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

下载本文示例工程

版本更新SkinLoad v0.3

说明: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

(全文完)