好了,前面我們講解了初級的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...