VC界面设计(破解版skin++皮肤库使用)
skin++可以使VC++等工具写的软件的界面很漂亮,但是试用版在运行时会跳出注册框,正式版又需要花钱,下面的这种方法将会使注册窗口不再跳出来。
1、将skin++(破解后的)的三个文件SkinPPWTL.h、SkinPPWTL.lib、SkinPPWTL.dll连同你需要用的皮肤文件一同拷贝到你的工程目录下。 2、在工程的stdafx.h文件引入SkinPPWTL.h头文件,并将SkinPPWTL.h文件加入工程。 #include "SkinPPWTL.h"// 注意这里要用引号!!! 3、Visual C++ 6.0中如下操作:在工程的工程—>设置—>连接—>对象/库模块中填入SkinPPWTL.lib。 4、在你的工程App类头文件中声明: #define SKINSPACE _T("/SPATH:") 注意:这个必须添加在#include的下面!!!在初始化函数InitInstance中添加:
CString cmdline = GetCommandLine();
int nFind = cmdline.Find(SKINSPACE); if(nFind != -1) {cmdline.Delete(0,nFind + _tcslen(SKINSPACE));
if(cmdline.GetAt(cmdline.GetLength()-1) == _T('"')) { cmdline.Delete(cmdline.GetLength()-1,1); }skinppLoadSkin((LPTSTR)(LPCTSTR)cmdline);
} else { skinppLoadSkin(_T("MSN Messenger.ssk")); }退出时释放资源:
int CHYPDFSystemApp::ExitInstance() { skinppExitSkin(); return CWinApp::ExitInstance(); } ======================================================================================== 2010-08-03 Skin++的使用 文章分类:C++编程 一.使用皮肤 将SkinPPWTL.lib 、skinppwtl.dll 、SkinPPWTL.h三个文件及相应皮肤(**.ssk)拷贝至工程文件夹下;一般还要将这些文件放在Debug文件夹下。 1.在(VC7)"项目->属性->链接器->输入->附加依赖项"中加入SkinPPWTL.lib 或在(VC6)"Project->Settings->Link->Object/library"中加入SkinPPWTL.lib 2.在StdAfx.h文件中加入#include "SkinPPWTL.h" //.. #endif // _AFX_NO_AFXCMN_SUPPORT #include "SkinPPWTL.h" //在这个地方加 //{ {AFX_INSERT_LOCATION}} //.. 3.在BOOL CXXApp::InitInstance()函数中加入: BOOL CWwApp::InitInstance() { AfxEnableControlContainer(); //… skinppLoadSkin(_T("blue.ssk"));//blue.ssk为项目下的皮肤文件 #ifdef _AFXDLL //… } 注:以上假定(假定已经将blue.ssk皮肤放在了工程文件夹下),如果不是请更改路径设置。 4.在**Dlg.h中加入头文件"SkinPPWTL.h" 5.在工程中加入头文件SkinPPWTL.h 二.卸载Skin++ 在程序的卸载函数中加入ExitInstance() ExitSkin(); 三.更换皮肤 执行函数LoadSkin即可以实现动态换肤 LoadSkin(_T("XPCorona.ssk"); 四.函数说明 InitializeSkin是SKin++的初始化函数,您可以采用如下参数加载Skin++ InitializeSkin(皮肤文件名); 注:如果皮肤文件名中没有路径则采用当前目录。 LoadSkin(皮肤文件名); 注:如果皮肤文件名中没有路径则采用当前目录。 五.使用分隔条窗体的应注意的问题 您必须SKINPLUSPLUS_SPLITTER()和SKINPLUSPLUS_INIT_SPLITTER(m_wndSplitter)宏 注:SKINPLUSPLUS_INIT_SPLITTER一般传入分隔条对象m_wndSplitter 例如: ...................... SKINPLUSPLUS_SPLITTER() int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { SKINPLUSPLUS_INIT_SPLITTER(m_wndSplitter); ...................... 六.文件说明 Readme.htm 你正在看的文档 DLL 使用Skin++所需的文件目录(打开) Skins 皮肤目录(打开) Sample 为演示程序目录 DLG为对话框演示程序(打开) SDI为当文档界面演示程序,同时也演示了分隔条的使用(打开) MDI多文档界面演示程序(打开) Dockbar演示了停靠窗口(打开) 注:关于SKIN++在VS2005中的使用。需要注意的几点是,SKIN++免费版是只支持ANSI的,但VS2005默认情况下编码为UNICODE,如果在编译链接时不把编码改为ANSI则无法正常生成。 选择 工程-属性-常规-语言-多字节字符集。 就是三个文件(SkinPPWTL.lib 、skinppwtl.dll 、SkinPPWTL.h),加上一个皮肤文件。总共四个文件,在运行时,需要将四个文件放到程序文件下,但是在生成了DEBUG文件后,如果想让DEBUG文件中的程序可以直接运行,那就需要将皮肤文件与DLL动态连接库文件都放到DEBUG文件中,RELEASE文件中一样,打包时就将四个文件一起打包,就可以了!七、在UNICODE编码下的使用
SKIN++使用起来应该说是比较方便的。 但,官方说法,只有企业版才支持UNICODE。如果您的程序正好不是ANSI。。那么下面的方法可能会对您有所帮助。。 一般咱们用SKIN++,只用到了skinppLoadSkin 与skinppExitSkin 。。如果是UNICODE程序,在编译时会提示LINK skinppLoadSkin 方法错误。。 其实咱们只要把 SkinPPWTL.h里的 skinppLoadSkin( TCHAR* szSkinFile,BOOL bFromIni = FALSE); 原型改为 skinppLoadSkin( CHAR* szSkinFile,BOOL bFromIni = FALSE); 在调用时 skinppLoadSkin ((CHAR*) "vladstudio.ssk");