最近对软件的皮肤产生了一些兴趣,之前拿codejock用了用,很想知道它是怎么实现的,最近找到了SkinTK,国人写的,地址(https://skintool.svn.sourceforge.net/svnroot/skintool)用TortoiseSVN可以将×××下来,包含了四个工程分别是:detours、SkinTK、SkinBuilder、以及一个示例工程Sample1,同时在资源文件中还包含一个已经做好的皮肤12.skn。用了一下,还是很方便的,下面介绍一下。
一、新建一个工程
可以是单文档、多文档或是对话框。这里以添加一个单文档工程SDISample为例。注意工程的字符集选择多字节字符集。
二、添加皮肤资源到资源视图中。
将12.skn拷贝到工程的res文件夹下,资源的类型为自定义类型,资源ID为IDR_SKIN1。
三、添加SkinTK.lib库的链接
在stdafx.h文件中添加以下这句:
#pragma comment (lib, _T("SkinTK.lib"))
四、初始化。
在工程文件SDISample.cpp中:
#include "SkinTool.h"(之前将SkinTool.h以及SkinExports.h文件拷贝到工程代码目录下)
在函数BOOL CSDISampleApp::InitInstance()中添加
SkinLoadMemSkin(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_SKIN1), _T("Skin"));
五、将SkinTK.dll(通过编译SkinTK工程生成)拷贝到生成程序的debug目录下
编译运行,生成可执行的程序。如下: