在对话框程序里使用skinmagic皮肤控件
1
先把skinmagiclib.h文件拷贝入工程目录,
在左边的fileview卡片里面,在Resource
files栏目加入SkinMagicLib.lib和DETOURS.lib,这两个文件的路径在哪里无所谓,只要加入就行。可以把它们拷贝入工程的目录下。还有,可以把smf皮肤文件都拷贝入工程的目录下,方便加载皮肤。
在FileView卡片里面加入SkinMagicLib.h文件,并在stdafx.h中加入#include
"SkinMagicLib.h"
#pragma comment(lib, "SkinMagicLibMT6Trial") //再加上这句话? 测试版库
2
在C**App类的文件里面找到InitInstance函数
在函数开始部分加入
VERIFY(1==InitSkinMagicLib(AfxGetInstanceHandle(),"Demo",
NULL,
NULL
) );//Demo字样可以随意修改
VERIFY(1==LoadSkinFile("corona.smf"));
//皮肤文件只要在同一目录下就行。如果没有,就编译出错
3
按Ctrl+W,看到ClassWizard,再给C**App类加入ExitInstance函数
内容是
ExitSkinMagicLib();//为了退出时清理内存
return
CWinApp::ExitInstance();
4
在C**Dlg::OnInitDialog()函数里面
结束部分加入
SetWindowSkin(
m_hWnd
,
"Dialog"
);
SetDialogSkin("Dialog");
5
加一个按钮或者菜单,内容是“load
skin”
添加按钮点击事件的代码为
char
strExt[]= "SkinMagic Files(*.smf)|*.smf||";
CFileDialog
dlg(TRUE, "*.smf","*.smf" , OFN_HIDEREADONLY
|
OFN_OVERWRITEPROMPT , strExt
,this);
if(dlg.DoModal()==IDOK )
{
LoadSkinFile((char*)(LPCSTR)(dlg.GetPathName()));
}
这样就能够随意从文件里面加载皮肤了。
6
最后,特别要注意:采用*.lib而不是*.dll时,一定要记得使用静态库而不是动态的,不然,会有17个错误在等着你的.
操作:工程-->设置-->General-->在Microsoft Foudation Classes项选"Use MFC in a Static Library".