Skin++的使用 (vs2008可行)

Skin++的使用 (vs2008可行)

一.使用皮肤

将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()   //这个要自己重载了virtual int 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");

就OK了。。。哈哈。。

原文地址  http://hi.baidu.com/lunda8/blog/item/3e23633f912cdecb9e3d6279.html

MFC 是一个经典的桌面应用程序开发框架,而Skin++ 是一个用于美化 MFC 应用程序界面的开源库。如果你想在 VS2022 上美化 MFC 应用程序的皮肤,可以按照以下步骤操作: 1. 下载并安装 Skin++ 库。你可以从 Skin++ 的官方网站或 GitHub 页面下载最新版本的库。 2. 在 VS2022 中创建一个 MFC 应用程序项目。 3. 将 Skin++ 库中的头文件和源文件添加到 MFC 应用程序项目中。你可以将它们添加到项目的源文件目录中,然后在 VS2022 中将它们添加到项目中。 4. 在应用程序的主窗口类中添加 SkinPP 消息映射宏和消息处理函数。例如,在 CMainFrame 类中添加以下代码: ```c++ #include "SkinPPWTL.h" #pragma comment(lib,"SkinPPWTL.lib") class CMainFrame : public CFrameWnd { public: CMainFrame(); virtual ~CMainFrame(); protected: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); DECLARE_MESSAGE_MAP() private: CSkinPPWTL m_skin; }; BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CREATE() END_MESSAGE_MAP() CMainFrame::CMainFrame() { } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // 初始化 Skin++ 库 m_skin.InitSkinPP(); return 0; } ``` 5. 在应用程序的 InitInstance 函数中将 Skin++ 库与主窗口类关联起来。例如,在 CMyApp 类中添加以下代码: ```c++ #include "MainFrm.h" class CMyApp : public CWinApp { public: CMyApp(); virtual ~CMyApp(); virtual BOOL InitInstance(); private: CMainFrame m_mainFrame; }; CMyApp::CMyApp() { } CMyApp::~CMyApp() { } BOOL CMyApp::InitInstance() { // 创建主窗口 if (!m_mainFrame.Create(NULL, _T("My App"))) return FALSE; // 将 Skin++ 库与主窗口关联起来 m_mainFrame.SetWindowSkin(IDR_SKIN1, SKIN_TYPE_ZIP, _T("SKIN.zip")); // 显示主窗口 m_pMainWnd = &m_mainFrame; m_mainFrame.ShowWindow(SW_SHOW); m_mainFrame.UpdateWindow(); return TRUE; } // 声明应用程序对象 CMyApp theApp; ``` 6. 在 VS2022 中编译和运行应用程序,你应该能够看到使用 Skin++ 美化的 MFC 应用程序界面。如果你想更改皮肤,只需替换 SKIN.zip 文件即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值