Using Skin++ For Visual C++ (Skin++ For Visual C++ 使用入门)

http://www.uipower.com

概述:

       本文介绍如何在Visual C++ 中使用Skin++

Skin++可以于3种方式被VC程序调用:

隐式链接Skin++动态链接库、显示链接Skin++动态链接库、链接Skin++静态链接库。

本文将分别介绍以上3种方式的调用方法与注意事项。

关于动态链接库与静态链接库的基础知识请参考《动态链接库与静态链接库的基础知识》

 

纲要

引言

       隐式链接Skin++动态链接库                 

       隐式链接Skin++注意事项

       显式链接Skin++动态链接库

       链接Skin++静态链接库                                           

 

 

引言

       Skin++Visual C++ 进行了全面的支持,提供3种调用Skin++方法。为了便于管理,Skin++提供了 统一的头文件SkinPPInc.h

       通过该头文件和工程属性中C/C++宏定义,即可完成Skin++的相应方法的调用。[回到纲要]

 

隐式链接Skin++动态链接库

1、在工程文件中,如stdafx.h中包含SkinPPInc.h文件:#include SkinPPInc.h”;

2拷贝下列文件到当前工程目录下

SkinPPInc.hSkinPlusPlus.libSkinPlusPlus.dllPixOS.ssk (皮肤文件);

       3在应用程序入口处,添加Skin++的加载加载皮肤文件函数。

           BOOL CTestSkinPPDialogApp::InitInstance(){

sppLoadSkin(_T("PixOS.ssk"));

。。。。。。

}

       4、编译运行,调用成功。[回到纲要]

隐式链接Skin++注意事项

       Skin++采用动态链接库时由于在Skin++ DLLDLL_PROCESS_DETACH中调用了sppExitSkin函数,

所以用户不需要在程序中调用sppExitSkinSkin++会自动释放所占资源。[回到纲要]

 

 

显式链接Skin++动态链接库:

在显式链接下,应用程序必须进行函数调用以在运行时显式加载 DLL。为显式链接到 DLL,应用程序必须:调用 LoadLibrary(或相似的函数)以加载 DLL 和获取模块句柄。调用 GetProcAddress,以获取指向应用程序要调用的每个导出函数的函数指针。由于应用程序是通过指针调用 DLL 的函数,编译器不生成外部引用,故无需与导入库链接。使用完 DLL 后调用 FreeLibrary

Skin++对这种方式提供了CSkinPPDynamicCallDll类,该类提供2个构造函数:

1)       默认构造函数 CSkinPPDynamicCallDll(),一般在调用Skin++的头文件中可以先声明该类的对象,这样就需要用到默认的构造函数,在需要将Skin++ Dll加载进来时,调用该类的Initialize方法,方法的参数为Skin++ Dll的名称默认情况下为SkinPlusPlus.dll.

2)       Dll名称参数的构造函数 CSkinPPDynamicCallDll(LPCTSTR strDllPathName),该构造应用在即时使用Skin++的场合。通过该构造函数,用户不再需要调用该类的Initialize方法。

       在该类析构时会自动将Skin++ Dll释放掉,并进行相应的资源清理工作。所以一般情况下用户不需要关心Skin++ Dll手动释放的问题。

       如果用户需要在该类被析构之前进行Dll的释放,请调用该类的Exit()方法。

       要调用该类,请先在工程中定义 _SKINPP_DYNAMICCALLDLL

       或在StdAfx.h #include SkinPPInc.h”前写上#define _SKINPP_DYNAMICCALLDLL

       如下:

       #define _SKINPP_DYNAMICCALLDLL

       #include SkinPPInc.h

       简单起见,我们直接在上面的工程TestSkinPPDialog中进行添加。

       接下来,我们在CTestSkinPPDialogApp类声明CSkinPPDynamicCallDll的对象:

       CSkinPPDynamicCallDll m_sppDynamicCall;

在应用程序入口处,添加对Skin++皮肤的加载方法。

BOOL CTestSkinPPDialogApp::InitInstance()

{

              m_sppDynamicCall.Initialize(NULL);

              m_sppDynamicCall.LoadSkin(_T("PixOS.ssk"),FALSE);

              。。。。。。

}

至此,动态调用Skin++ Dll成功。[回到纲要]

 

链接Skin++静态链接库

Skin++ 提供Visual C++ 各个版本各种编译条件下静态链接库。各版本Skin++静态库的名称均有所不同。

Skin++ 静态链接库的命名规则:

1.       SkinPPStaticSkin++静态链接库的前缀缩写 ;

2.       S 为静态链接MFC或静态调用运行时库、D为动态链接MFC或动态调用运行时库。

VC6为例,在工程设置的C++ 页面的"Use run-time &library:"段中可以看到其设置,如果在下边的ComboBox

中选择的名称后面带DLL的,那么说明你们的工程是动态调用运行时库,如果没有带DLL文字,那就说明是静态调用

运行时库。一般情况下,用户不需要改变其设置,该设置会随着选择静态链接MFC或动态链接MFC的改变而改变。

如果当前工程是静态链接MFC的,那么你的工程就是静态调用运行时库,如果是动态链接MFC的,那么就是动态调用

运行时库。

如果你的程序是Win32 SDK,那么这个时候,你需要自己来确定选择哪种方式来调用运行时库,并选择合适的Skin++ 静态链接库。

              3RRelease的意思。由于静态链接库必须保证Release版本的静态库对应Release版本的调用程序,Debug版本的静态库对应Debug

                     版本的调用程序,所以Skin++ 为不同的版本提供了相对应的Skin++ 静态链接库。

                     DDebug的意思。

              4AANSI编码方式。UUnicode编码方式。Skin++提供了2种编码方式的静态库。

              5.静态链接库还必须要求开发工具的一致性。就是如果调用者是VC6工程,那么静态库也必须是VC6编译而成的。Skin++ 提供了

                     VC6VC2003VC2005 3个开发环境的所有版本的静态库。

              例子1

问:我们现在有个VC2003的动态链接MFCDebug工程,并采用Unicode编码方式,那么该选用哪个Skin++ 静态链接库?

                     答:请选择安装目录下的Visual C++ 2003目录中的SkinPPStaticDDU.lib

             

         每个开发环境有8个版本的静态库,所以总共有24个版本的静态库。

        为了便于调用,均在SkinPPInc.h中进行了静态库的自动调用,用户只需要在工程中包含SkinPPInc.h文件,

     就可以完成对Skin++的调用。不再需要在工程中判断版本和编码方式。也不再需要拷贝令人头痛各种文件。[回到纲要]

     Skin++ 静态链接库文件列表

   

         Skin++ 使用入门首页

 

Copyright@2004-2007 上海勇进软件有限公司,保留所有权利。
如果您对帮助系统有任何建议,可以直接发邮件到support@uipower.com
Visual Studio,
Visual Studio logo 是微软公司在美国或在其他国家的注册商标。