網路上的SkinMagic版本繁多,而且試用版,破解版並存,各版本之間支援的皮膚檔案也不盡相同,因此經常有人在網上詢問為何添加了SkinMagic沒有效果甚至導致程式崩潰之類的問題。這裡有一個可用的破解版本(包含VC6使用的庫和支援的常用皮膚檔案)SkinMagicToolkitV2.2.31。請注意這個包的大小為1.31M,如果小於1.31M說明下載不完全,則無法使用,建議使用迅雷下載。
一:檔案說明
SkinMagicLib.h 必須的標頭檔,請添加到工程中。
SkinMagic.lib + SkinMagic.dll 動態連結程式庫配套使用
編譯時間需要在工程中添加SkinMagic.dll,程式運行時需要SkinMagic.dll
以下版本的編譯出來的程式運行時不再依賴SkinMagic.dll
SkinMagicLibMD6.lib 靜態連結庫,用於VC6的Release版編譯
SkinMagicLibMT6.lib 靜態連結庫,用於VC6的Debug版編譯
二:使用步驟
1。把SkinMagicLib.h, SkinMagicLibMT6.lib, SkinMagicLibMD6.lib放到你的VC6工程目錄下
2。在StdAfx.h中添加
#include "SkinMagicLib.h"
3。在工程設定中添加對應的庫
Win32 Release中填上SkinMagicLibMD6.lib
Win32 Debug中填上SkinMagicLibMT6.lib
4。在InitInstance()函數的開始處添加初始化SkinMagic資源的代碼。
VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
5。在InitInstance()函數中載入皮膚檔案並設定程式皮膚。
你可以選擇添加皮膚檔案到資源中,並編譯到程式中。或者程式在運行時動態載入皮膚檔案
a. 比如添加corona.smf,設定資源類型為"SKINMAGIC", 資源ID為IDR_SKIN_CORONA
CBossKeyDlg dlg;
m_pMainWnd = &dlg;
//載入SkinMagic皮膚
VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_CORONA, "SKINMAGIC"));
VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));
VERIFY(1 == SetDialogSkin("Dialog"));
int nResponse = dlg.DoModalEx(bStartShow);
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
b. 程式在運行時動態載入皮膚檔案
CBossKeyDlg dlg;
m_pMainWnd = &dlg;
//載入SkinMagic皮膚
VERIFY(1 == LoadSkinFile("corona.smf"));
VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));
VERIFY(1 == SetDialogSkin("Dialog"));
int nResponse = dlg.DoModalEx(bStartShow);
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
6。在ExitInstance()函數中釋放SkinMagic資源
//釋放SkinMagic資源:
ExitSkinMagicLib();