MFC使用SkinMagic使用詳解 中級

2021-06-09 04:33:17 字數 4916 閱讀 9569

好了,前面我們講解了初級的skinmagic的應用,現在我們來學習skinmagic的其他一些技巧。

1.skinmagic常用函式介紹

2.skinmagic三種介面載入**方法介紹

3.skinmagic錯誤處理

4.其他skinmagic技巧

1.skinmagic常用函式介紹

(1)initskinmagiclib函式:初始化skinmagic

int initskinmagiclib( //初始化skinmagic工具庫

hinstance hinstance, //應用程式控制代碼

char* szregcode, //skinmagic的使用註冊碼。若無置為null

char* szreserved2); //保留位,為null

(2)loadskinfile函式:載入**檔案

loadskinfile(lpctstr lpskinfile)//要載入的**檔名
(3)loadskinfromresource函式:從資源載入**檔案

int loadskinfromresource(

hmodule hmodule, //包含**檔案的模組控制代碼,若null表面在本模組中

char* lpskinname , //**資源的名稱

char* lptype); //資源的型別

(4)setwindowskin函式:為標準對話方塊載入**(比如文件)

int setwindowskin( hwnd hwnd , //要換膚的對話方塊控制代碼

lpctstr lpskinname )//**名

(5)setdialogskin函式:為對話方塊載入**檔案(比如基本對話方塊dlg)

int setdialogskin( hwnd hwnd , //要換膚的對話方塊控制代碼

lpctstr lpskinname )//**名

(6)setshapewindowskin函式:為shape對話方塊載入**檔案(這個對話方塊是固定大小,無法進行拉伸縮小)

int setshapewindowskin(

hwnd hwnd, //對話方塊控制代碼

lpctstr pszname)     //shape介面**名.
(6)exitskinmagiclib函式:釋放資源

void exitskinmagiclib()//釋放資源檔案
好了常用的幾個實現換膚的函式就在這裡了,我們來實現幾種不同的換膚。

2.skinmagic三種介面載入**方法介紹

(1)為單文件對話方塊換膚(標準對話方塊)

verify( 1 == initskinmagiclib( afxgetinstancehandle(), _t("scribble") , null,  null ) );//初始化skinmagic

verify( 1 == loadskinfile(_text("alphaos.smf")));//載入**檔案

然後在dlg類中的oninitdialog換膚:

verify( 1 == setwindowskin( this->m_hwnd , _t("falame")));
(2)為對話方塊換膚

verify( 1 == initskinmagiclib( afxgetinstancehandle(), _t("scribble") , null, null ) );//初始化skinmagic

verify( 1 == loadskinfile(_text("alphaos.smf")));//載入**檔案

然後在dlg類中的oninitdialog換膚:

int setdialogskin(_t("dialog")));
(3)為shape介面換膚

verify( 1 == initskinmagiclib( afxgetinstancehandle(), _t("scribble") , null, null ) );//初始化skinmagic

verify( 1 == loadskinfile(_text("alphaos.smf")));//載入**檔案

然後在dlg類中的oninitdialog換膚:

setshapewindowskin(this->m_hwnd , _t("shape"));
3.skinmagic錯誤處理

如果我們在使用skinmagic的時候發現有錯誤,比如載入**不成功之類的,這時候我們可以用skinamgic為我們提供的乙個函式來獲取錯誤**,對比錯誤**來知道我們發生了哪個錯誤,然後進行錯誤排查處理。

錯誤**表:

smec_ok                                             0                  //沒有錯誤發生

smec_registerwindow     1     //fail to register windows class

smec_messagehook    2      //fail to set message hook

smec_keyhook    3      //fail to set keyboard hook

smec_filenotfound     4     //not find the file

smec_decompresserror     5      //fail to decompress skin file

smec_headererror     6      //skin file header error

smec_skinversionerror     7     //skin file version not match

smec_objectnotfound     8     //obect not found

smec_objecttypeunmatch     9     //object type not match

smec_imagesizeerror    10     //image size error

smec_createimagelistfail    11     //fail to create image list object

smec_notimplement    12     //the function not implement

smec_parametererror    13     //the function parameter error

smec_initscrollba***il     14    //fail to skin scrollbar

smec_loadresourcefail     15     //fail to load the resource

smec_findresourcefail    16     //fail to find the resource

smec_windowsxpnotcompatible 17     //not compatible with windows xp

smec_outofmemory    18     //out of memory

smec_libaraynotinitialized    19     //library not initialized

如果我發現我換膚不成功,我用getskinmagicerrorcode獲取到返回值 8,那對應的就是smec_objectnotfound,物件沒有找到!

出錯之後,如果哪個呼叫出錯,就在哪個呼叫下面呼叫,這樣來除錯你的程式載入**問題。

4.其他skinmagic技巧

(1)停止自動給窗體載入**

removedialogskin(); //停止自動給窗體載入**,要是針對setdialogskin
(2)去掉指定

視窗**

removewindowskin(hwnd hwnd);//去掉指定窗體上的**
(3)為單個控制項換膚

int setcontrolskin(

hwnd hwnd, //控制項控制代碼

lpctstr pszname, //**檔案裡面的**物件

lpctstr pszownerskinname //**檔案裡面的視窗物件

);

【未完待續】

MFC使用SkinMagic使用詳解 初級

skinmagic使用流程及基本用法 1.製作skinmagic 2.包含skinmagic檔案 3.初始化skinmagic載入 檔案 4.給窗體載入 5.釋放 1.製作skinmagic 大家可以使用skinmagic提供的skinmagicbuildr設計自定義風格的一套 如果要求不高的也可以...

使用SkinMagic美化MFC對話方塊

我在看一本王艷平的 windows程式設計 裡面第七章提到了使用skinmagic美化介面的問題。書上講的不明不白網上也有各種教程,幾天終於自己把skinmagic應用到了mfc程式中,快哉快哉!一 開啟vc6.0,新建乙個mfc基於對話方塊的應用程式。把工程命名為skin。include skin...

SkinMagic面板使用

一 把skinmagiclib.h skinmagictrial.lib skin.smf和skinmagictrial.dll這四個檔案拷貝到工程目錄中。二 在stdafx.h中新增 endif afx no afxcmn support 在這一行後新增如下兩行 include skinmagic...