程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> SkinLoad程序界面換膚工具

SkinLoad程序界面換膚工具

編輯:關於VC++

源代碼中包括兩個壓縮包:

SkinLoad.zip為本文示例工程

skinloadv0.3.rar為版本更新SkinLoad v0.3

說明:SkinLoad是一個給程序換膚的工具,通過幾個簡單的函數調用就可以給你的應用程序加上漂亮的皮膚,包括所有的系統對話框。通過SkinLoadMaker皮膚編輯工具,可以自己定制皮膚。

界面效果圖如下:

如何在程序中實現換膚:

一、靜態鏈接動態庫

需要三個文件:"SkinLoadLib.h","SkinLoad.lib","SkinLoad.dll"

1、添加 "SkinLoadLib.h"、"SkinLoad.lib"文件到工程中

2、在App類中包含頭文件:

#include "SkinLoadLib.h"

3、在App類的 InitInstance()函數中初始化動態庫,加載皮膚文件:

InitSkinLoad(GetCurrentThreadId());
LoadSkin("xp_normal.skin"); //可以放在任何地方,如果在不同的文件中,要包含路徑

4、在App類的 ExitInstance() 中卸載動態庫,釋放使用的資源:

ExitSkinLoad();

說明:這樣使用方便,缺點是程序運行時必須保證 SkinLoad.dll 文件存在,否則程序無法運行

二、動態加載動態庫

1、在App類的 InitInstance()函數中加載動態庫。

定義一個變量保存加載的動態庫句柄,可以是全局的,也可以是App類的成員變量

HINSTANCE m_hDllSkin;
m_hDllSkin = LoadLibrary("SkinLoad.dll");

2、在App類的 InitInstance()函數中調用初始化函數和加載皮膚文件的函數

if(m_hDllSkin != NULL)
{
  typedef int (* INITSKIN)(DWORD dwThreadId);
  typedef bool (* LOADSKIN)(char* cPath);
  INITSKIN pInitSkin = (INITSKIN)GetProcAddress(m_hDllSkin,"InitSkinLoad");
  LOADSKIN pLoadSkin = (LOADSKIN)GetProcAddress(m_hDllSkin,"LoadSkin");
  if(pInitSkin != NULL && pLoadSkin != NULL)
  {
    (*pInitSkin)(GetCurrentThreadId());
    (*pLoadSkin)("xp_normal.skin");
  }
}

3、在App類的 ExitInstance() 中卸載動態庫

if(m_hDllSkin != NULL)
{
  typedef bool (* EXITSKIN)();
  EXITSKIN pExitSkin = (EXITSKIN)GetProcAddress(m_hDllSkin,"ExitSkin");
  if(pExitSkin != NULL)
  {
    (*pExitSkin)();
  }
   FreeLibrary(m_hDllSkin);
}

說明:這樣使用比較麻煩,要手動加載動態庫,還要自己獲取函數指針再用。但是這樣可以在程序中判斷所需的 SkinLoad.dll 動態庫是否存在,不至於造成程序無法運行

皮膚制作工具 SkinLoadMaker 使用說明:

程序自帶一個皮膚文件,制作自己的皮膚文件時只要修改相應的地方就可以了。如果不做任何修改也可以直接生成一個皮膚文件,和我的 xp_normal.skin 是一樣的。運行 SkinLoadMaker 時,會產生一個Temp文件夾,裡面放的是程序使用的圖片,大家照著格式改就可以了。

說明:

標題欄背景圖:要求有兩個,一個是正常狀態的,一個是程序失去焦點的,按上下順序放在一張圖中

標題欄按鈕:包括最小化、最大化、恢復、關閉。每種一幅圖,包含四張小圖,分別是Normal、Mouse On、Mouse Down、Disabled

按鈕位圖:可以不使用。也是四個狀態放到一張圖中。分別是Normal、Mouse On、Mouse Down、Disabled

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved