代碼運行效果圖如下:
以前看到瑞星和金山詞霸有換皮膚功能,很是羨慕,自己也想做個換皮膚的程序,但畢竟自己能力有限,以前在此處看到一篇介紹換皮膚功能的文章,但只能應用在對話框程序上。我也試過像BCGCBar這樣的大型軟件,給我的感覺是軟件老是出問題,應用起來也很復雜。在年前我就看到本站有SkinMagic軟件包,但當時不知怎麼用,發了貼子也沒人回答。可能是很少有人用的緣故吧,本站也未更新此軟件包。偶然的一次機會,讓我知道了怎樣來用它,
而且編譯出來的軟件體積很小,所以在這裡向大家介紹一下,希望對大家有些幫助。
如何使用:
① 新建工程後,將SkinMagic包中的SkinMagicLib.h、SkinMagicLib.lib、DETOURS.lib拷貝到所在文件夾下,點擊Project->Add To Project->Files,包含到工程中。
② 在Resource View中點擊Import 菜單引入幾個Skin二進制文件放在相同的“SKINMAGIC”文件夾下,分別給起一個名字(見源程序)。
③ 在stdafx.h中加入#include "SkinMagicLib.h"
④ 在此處添加如下內容
if (!ProcessShellCommand(cmdInfo))
return FALSE;
/////////////////////////////////////////////////////////////////////////////////////////
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), "Demo" ,NULL,NULL ) );//初始化類庫
VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() , "KROMO" ,"SKINMAGIC") );//從資源中加載皮膚
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
VERIFY( 1 == SetDialogSkin( "Dialog" ) );
((CMainFrame*)m_pMainWnd)->m_bSkinned = TRUE;
((CMainFrame*)m_pMainWnd)->m_nIndex = 0;
////////////////////////////////////////////////////////////////////////////////////////////
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
⑤ 在MainFrame中加入換皮膚菜單,及相應的函數,在函數中加載皮膚。
void CMainFrame::OnDevior()
{
LoadSkinFromResource( AfxGetInstanceHandle() , "DEVIOR" ,"SKINMAGIC") ;
}
到此為止,完美的換皮膚程序就出來了。
本文配套源碼