SkinMagic的使用方法-——为VC开发程序换皮肤

来源:互联网 发布:ssh 改端口号 编辑:程序博客网 时间:2024/04/26 07:27

网络上的SkinMagic版本繁多,而且试用版,破解版并存,各版本之间支持的皮肤文件也不尽相同,因此经常有人在网上询问为何添加了SkinMagic没有效果甚至导致程序崩溃之类的问题。这里有一个可用的破解版本(包含VC6使用的库和支持的常用皮肤文件)。请注意这个包的大小为1.31M,如果小于1.31M说明下载不完全,则无法使用,建议使用迅雷下载。

一:文件说明
SkinMagicLib.h 必须的头文件,请添加到工程中。
SkinMagic.lib + SkinMagic.dll 动态链接库配套使用
编译时需要在工程中添加SkinMagic.dll,程序运行时需要SkinMagic.dll

以下版本的编译出来的程序运行时不再依赖SkinMagic.dll
SkinMagicLibMD6.lib 静态链接库,用于VC6的Release版编译
SkinMagicLibMT6.lib 静态链接库,用于VC6的Debug版编译

二:使用步骤
1。把SkinMagicLib.h, SkinMagicLibMT6.lib, SkinMagicLibMD6.lib放到你的VC6工程目录下
2。在StdAfx.h中添加
#include "SkinMagicLib.h"
3。在工程设置中添加对应的库
Win32 Release中填上SkinMagicLibMD6.lib
Win32 Debug中填上SkinMagicLibMT6.lib

4。在InitInstance()函数的开始处添加初始化SkinMagic资源的代码。
VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));

5。在InitInstance()函数中加载皮肤文件并设置程序皮肤。
你可以选择添加皮肤文件到资源中,并编译到程序中。或者程序在运行时动态加载皮肤文件
a. 比如添加corona.smf,设置资源类型为"SKINMAGIC", 资源ID为IDR_SKIN_CORONA
(也可以这样子. VERIFY( 1 == LoadSkinFile("corona.smf"));)
CBossKeyDlg dlg;
m_pMainWnd = &dlg;

//加载SkinMagic皮肤
VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_CORONA, "SKINMAGIC"));
VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));
VERIFY(1 == SetDialogSkin("Dialog"));

int nResponse = dlg.DoModalEx(bStartShow);
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
b. 程序在运行时动态加载皮肤文件

CBossKeyDlg dlg;
m_pMainWnd = &dlg;

//加载SkinMagic皮肤
VERIFY(1 == LoadSkinFile("corona.smf"));
VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));
VERIFY(1 == SetDialogSkin("Dialog"));

int nResponse = dlg.DoModalEx(bStartShow);
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}

6。在ExitInstance()函数中释放SkinMagic资源
//释放SkinMagic资源:
ExitSkinMagicLib();

trip:

貌似有点小问题, 在有些VC6工程中, Release版和Debug版编译都应该选择SkinMagicLibMD6.lib, 视乎你链接时使用的运行时库类型而定

 

 

 

 

=================================================================================

 

SkinMagic的使用方法-——为VC开发程序换皮肤

自从学习了VC以后,开始对MFC编程有了很大的兴趣,于是就到处找用VC写的应用程序,学上几招,自己也写个小应用程序来玩玩。于是第一个下手的便是“Autorun.inf 免疫器”,其中的代码倒不是问题,只是总觉的VC6.0的控件和皮肤有点让人看不下去……什么?自己贴图?我可没这本事啊……然而某日偶发现了这个——SkinMagic,正好实现了我的要求。

先到百度上搜索SkinMagicToolkit并下载回来,里边包含以下的文件:SkinMagicLib.h 头文件;SkinMagic.lib + SkinMagic.dll 动态连接库文件;SkinMagicLibMD6.lib 发布版的静态连接库;SkinMagicLibMT6.lib 调试版的静态链接库。由于向我这样的新手写的应用程序也就一个可执行文件,所以在这里就先说一下静态链接的方法并且把皮肤文件加载到资源中。

1.首先要把SkinMagicLib.h和SkinMagicLibMT6.lib放在工程目录下。
2.在C***App所在的cpp文件中加入#include "SkinMagicLib.h"。
3.在菜单Project|Settings的Link选项卡下的Object/library modules中加入SkinMagicLibMD6.lib,将发布版的静态库加到工程中。
4.将皮肤加载到资源中:资源视图中项目名上右键Import,选择皮肤文件(在skin文件里),弹出对话框中的Resource type中填入SKINMAGIC。修改资源ID为IDR_SKIN_XPGREAN(以xpgrean.smf为例)。
5.在C***App的InitInstance()函数的开始部分加入如下代码:
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("ReadUI") ,NULL,NULL ) );//初始化
VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_XPGREAN, "SKINMAGIC"));//载入皮肤资源
VERIFY(1 == SetDialogSkin("Dialog"));//设置对话框皮肤
如果是文档程序就加入下面一句代码:
VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));//设置窗口皮肤
以上的函数在SkinMagicLib.h头文件中有详细的定义和解释。
关于VERIFY干什么用的请自己查阅MSDN。
6.打开ClassWizard在C***App中添加ExitInstance()函数加入如下代码释放SkinMagic资源:
ExitSkinMagicLib();
7.编译运行,窗口皮肤好看多了,呵呵。
你也可以尝试一下其它的皮肤,当然如果你认为自带的皮肤不够好,你也可以找找SkinMagicSDK,通过SkinBuilder来编辑自己的皮肤。
如果使用动态库的话,只需把SkinMagic.lib和SkinMagic.dll 动态连接库文件放到工程的文件夹下,将SkinMagic.lib 导入到工程中即可,只是发布是要带着SkinMagic.dll文件一起发布。

 

 

 

 

 

=======================================================================

 

1.将SkinMagic.dll和SkinMagicU.dll文件复制到Debug或Release文件夹下。
2.将其他文件放到代码文件夹下,这样最简单,对于不会相对路径的童鞋来说。
3.在StdAfx.h头文件下添加所需的头文件:
#include "SkinMagicLib.h"
还需要调用SkinMagic.lib文件,这个文件可以静态调用,也可以动态调用。
静态调用:Project--setting--link--
    --Category -- General
    --Object/library modules -- SkinMagic.lib
动态调用:#pragma comment(lib,"SkinMagic.lib")
4.在应用程序的InitInstance()函数中添加语句:
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("Devior") ,NULL,NULL ) );/* the name of the application*/
VERIFY( 1 == LoadSkinFile(_T("GreenOcean.smf"))); /*the name of the skin file*/
VERIFY( 1 == SetDialogSkin( _T("Dialog") ) );/*the name of the skinFrameWnd object*/
5.在程序的退出函数ExitInstance() 中添加语句:
ExitSkinMagicLib();

6.程序发布的时候,需要将dll文件和皮肤文件一起打包。