对于Skinmagic库如果你在VS下调用的时候崩溃那有可能是你的调用库调用皮肤文件的时候出错了,本人现在给出MFC和C++在VS2005/2008/2010下的皮肤库调用方法。
1.把Skinmagic 2.5的 SkinMagic.lib、corona.smf、SkinMagicLib.h放到工程目录下2.把Skinmagic 2.5的SkinMagic.dll放到Debug目录下
3.在工程的stdafx.h中写入:
#pragma comment(lib,"SkinMagic")//调用皮肤lib
#include "SkinMagicLib.h"//包含皮肤头文件
4.在APP类的InitInstance函数中添加以下代码
1.把Skinmagic 2.5的 SkinMagic.lib、corona.smf、SkinMagicLib.h放到工程目录下2.把Skinmagic 2.5的SkinMagic.dll放到Debug目录下
3.在工程的stdafx.h中写入:
#pragma comment(lib,"SkinMagic")//调用皮肤lib
#include "SkinMagicLib.h"//包含皮肤头文件
4.在APP类的InitInstance函数中添加以下代码
InitCommonControlsEx(&InitCtrls);
VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), "Dialog", NULL, NULL));//初始化皮肤库,关键在第一个要获取实例句柄。其他可为NULL。
VERIFY( 1 == LoadSkinFile(_TEXT("Network.smf")));//加载皮肤库文件
CWinApp::InitInstance();
5.在APP类的InitInstance函数中再次添加以下代码(只添加粗体部分粗体部分):
CNetworkDlg dlg;
m_pMainWnd = &dlg;
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));//选择Frame界面使用的样式
VERIFY( 1 == SetDialogSkin( "Dialog" ) );//选择Dialog使用的皮肤库样式
INT_PTR nResponse = dlg.DoModal();
搞定收工作,如果大家在运行调用了皮肤库的程序(非调试下运行)记得要把smf放到运行的目录下,如果不放的话这时候会发生程序运行崩溃的情况, 原因是程序找不到smf运行文件。