
SkinLoad 提供幾個 API 即可為程式套用皮膚(含系統對話框),並附贈 SkinLoadMaker 皮膚編輯器自製皮膚。提供靜態連結與動態載入兩種整合方式。
SkinLoadLib.h、SkinLoad.libApp 類別:#include "SkinLoadLib.h"InitInstance():InitSkinLoad(GetCurrentThreadId());
LoadSkin("xp_normal.skin");
ExitInstance():ExitSkinLoad();缺點:執行時必須有 SkinLoad.dll,否則無法啟動。
// App 類別成員
HINSTANCE m_hDllSkin;
BOOL CMyApp::InitInstance()
{
m_hDllSkin = LoadLibrary("SkinLoad.dll");
if (m_hDllSkin)
{
typedef int (*INITSKIN)(DWORD);
typedef bool (*LOADSKIN)(char*);
INITSKIN pInit = (INITSKIN)GetProcAddress(m_hDllSkin, "InitSkinLoad");
LOADSKIN pLoad = (LOADSKIN)GetProcAddress(m_hDllSkin, "LoadSkin");
if (pInit && pLoad)
{
pInit(GetCurrentThreadId());
pLoad("xp_normal.skin");
}
}
// ...
}
int CMyApp::ExitInstance()
{
if (m_hDllSkin)
{
typedef bool (*EXITSKIN)();
EXITSKIN pExit = (EXITSKIN)GetProcAddress(m_hDllSkin, "ExitSkin");
if (pExit) pExit();
FreeLibrary(m_hDllSkin);
}
return CWinApp::ExitInstance();
}
優點:可檢測 DLL 是否存在,避免程式啟動失敗。
Temp 資料夾含所有圖素範本.skin 檔內含 xp_normal.skin 範例皮膚,未修改直接產出即為相同效果。