SkinMagic使用方法

本文详细介绍如何在项目中使用SkinMagic皮肤库实现界面美化,包括安装配置、皮肤加载及应用、资源释放等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.0版

把corona.smf,SkinMagicLibMD6.lib,SkinMagicLib.h考入程序文件夹中.

在stdafx.h中添加代码
#include "SkinMagicLib.h"
//#pragma comment(lib, "SkinMagicLibMD6Trial.lib")
#pragma comment(lib, "SkinMagicLibMD6.lib")

/* 当在Project/Setting/General中选择"Use MFC in a Static Library"时,
   需要以下两条语句:
*/
#pragma comment(linker, "/FORCE:MULTIPLE")
#pragma comment(linker, "/OPT:NOREF")

 

在主文件添加头文件
#define COMPILE_MULTIMON_STUBS
#include "multimon.h"


在BOOL CMDIDemoApp::InitInstance()开头添加
 VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("Demo") ,
       NULL,
       NULL ) );

 VERIFY( 1 == LoadSkinFile( _T("corona.smf") ) );

在尾部 pMainFrame->ShowWindow(m_nCmdShow);
 pMainFrame->UpdateWindow();
之前添加
 VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , _T("MainFrame") ));
 SetControlTooltip( pMainFrame->m_wndToolBar.m_hWnd , _T("ToolBar") );
 VERIFY( 1 == SetDialogSkin( _T("Dialog") ) );

之后就编译成功了,继续为子窗口重载WM_CREATE或WM_INITDIALOG
在其中添加代码SetWindowSkin( m_hWnd , _T("MainFrame") );

 

 

 

 

2.2版

1、下载SkinMagic Toolkit,复制SkinMagicTrial.dll、SkinMagicTrial.lib、SkinMagicLib.h以及皮肤文件corona.smf至项目的目录下。(这样比较简单J,可以在这下载。)

2、在stdafx.h中加入头文件和库的引用,如下:

 

#i nclude "SkinMagicLib.h"

#pragma comment(lib, "SkinMagicTrial.lib")


 


l       使用SkinMagic

 

1、  初始化SkinMagic库:

 

int  __stdcall InitSkinMagicLib( HINSTANCE hInstance,

 

                                                                    LPCTSTR lpApplication ,

 

                                                                    LPCTSTR lpReserved1,

 

                                                                   LPCTSTR lpReserved2 );

 

在 CxxxApp::InitInstance()中加入初始化SkinMagic库的代码:

 

       VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));

 

2、调入皮肤文件:

 

        皮肤的调用有两种方法,一是直接从皮肤文件中调用,另一种方法是从资源文件中调用,分别说明如下:

 

1)  从皮肤文件中调用皮肤:

 

int  __stdcall LoadSkinFile( LPCTSTR lpSkinFile );

 

2)从资源文件中调用皮肤:

 

int  __stdcall LoadSkinFromResource(HMODULE hModule,

 

                     LPCTSTR lpSkinName ,

 

LPCTSTR lpType);

 

现在CxxxApp::InitInstance()中的代码如下:

 

BOOL CxxxApp::InitInstance()

 

{

 

         VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));

 

         VERIFY( 1 == LoadSkinFile("corona.smf"));

 

         AfxEnableControlContainer();

 

    //…..下略

 

}

 

3、将皮肤应用到程序上

 

       int  __stdcall SetWindowSkin( HWND hWnd , LPCTSTR lpSkinName ); 

 

   int  __stdcall SetDialogSkin( LPCTSTR szSkinName );

 

1)对话框程序代码位置:

 

BOOL CxxxApp::InitInstance()

 

{

 

         //...上略

 

         m_pMainWnd = &dlg;

 

         VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));

 

    VERIFY( 1 == SetDialogSkin( "Dialog" ) );

 

         int nResponse = dlg.DoModal();

 

    //…下略

 

}

 

2)文档视图程序代码的位置

 

BOOL CxxxApp::InitInstance()

 

{

 

         //…上略

 

         m_pMainWnd->ShowWindow(SW_SHOW);

 

         m_pMainWnd->UpdateWindow();

 

         VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));

 

    VERIFY( 1 == SetDialogSkin( "Dialog" ) );

 

         return TRUE;

 

}

 

4、释放SkinMagic资源

 

void  __stdcall ExitSkinMagicLib();

 

重载应用程序的ExitInstance()函数,添加如下代码:

 

int CxxxApp::ExitInstance()

 

{

 

                  ExitSkinMagicLib();

 

         return CWinApp::ExitInstance();

 

}


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值