MFC使用SkinMagic使用详解【中级】
来源:互联网 发布:在淘宝上买匕首犯法吗 编辑:程序博客网 时间:2024/06/05 23:56
好了,前面我们讲解了初级的Skinmagic的应用,现在我们来学习SkinMagic的其他一些技巧。
1.SkinMagic常用函数介绍
2.SkinMagic三种界面加载皮肤方法介绍
3.SkinMagic错误处理
4.其他Skinmagic技巧
1.SkinMagic常用函数介绍
(1)InitSkinMagicLib函数:初始化SkinMagic
int InitSkinMagicLib( //初始化SkinMagic工具库 HINSTANCE hInstance, //应用程序句柄 char* szApplication , //皮肤文件中定义的应用程序名,置为NULL即可 char* szRegCode, //SkinMagic的使用注册码。若无置为NULL char* szReserved2); //保留位,为NULL
(2)LoadSkinFile函数:加载皮肤文件
LoadSkinFile(LPCTSTR lpSkinFile)//要加载的皮肤文件名
(3)LoadSkinFromResource函数:从资源加载皮肤文件
int LoadSkinFromResource( HMODULE hModule, //包含皮肤文件的模块句柄,若NULL表面在本模块中char* lpSkinName , //皮肤资源的名称 char* lpType); //资源的类型
(4)SetWindowSkin函数:为标准对话框加载皮肤(比如文档)
int SetWindowSkin( HWND hWnd , //要换肤的对话框句柄LPCTSTR lpSkinName )//皮肤名
(5)SetDialogSkin函数:为对话框加载皮肤文件(比如基本对话框Dlg)
int SetDialogSkin( HWND hWnd , //要换肤的对话框句柄 LPCTSTR lpSkinName )//皮肤名
(6)SetShapeWindowSkin函数:为shape对话框加载皮肤文件(这个对话框是固定大小,无法进行拉伸缩小)
int SetShapeWindowSkin( HWND hWnd, //对话框句柄
LPCTSTR pszName) //shape界面皮肤名.
(6)ExitSkinMagicLib函数:释放资源
void ExitSkinMagicLib()//释放资源文件
好了常用的几个实现换肤的函数就在这里了,我们来实现几种不同的换肤。
2.SkinMagic三种界面加载皮肤方法介绍
(1)为单文档对话框换肤(标准对话框)
在App类中InitInstance函数中先初始化一下Skinamgic,然后加载皮肤库:
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("SCRIBBLE") , NULL, NULL ) );//初始化SkinMagic VERIFY( 1 == LoadSkinFile(_TEXT("AlphaOS.smf")));//加载皮肤文件
然后在Dlg类中的OnInitDialog换肤:
VERIFY( 1 == SetWindowSkin( this->m_hWnd , _T("Falame")));
(2)为对话框换肤
在App类中InitInstance函数中先初始化一下Skinamgic,然后加载皮肤库:
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("SCRIBBLE") , NULL, NULL ) );//初始化SkinMagicVERIFY( 1 == LoadSkinFile(_TEXT("AlphaOS.smf")));//加载皮肤文件
然后在Dlg类中的OnInitDialog换肤:
int SetDialogSkin(_T("Dialog")));
(3)为shape界面换肤
在App类中InitInstance函数中先初始化一下Skinamgic,然后加载皮肤库:
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("SCRIBBLE") , NULL, NULL ) );//初始化SkinMagicVERIFY( 1 == LoadSkinFile(_TEXT("AlphaOS.smf")));//加载皮肤文件
然后在Dlg类中的OnInitDialog换肤:
SetShapeWindowSkin(this->m_hWnd , _T("Shape"));
3.SkinMagic错误处理
如果我们在使用Skinmagic的时候发现有错误,比如加载皮肤不成功之类的,这时候我们可以用Skinamgic为我们提供的一个函数来获取错误代码,对比错误代码来知道我们发生了哪个错误,然后进行错误排查处理。
错误代码表:
SMEC_OK 0 //没有错误发生SMEC_REGISTERWINDOW 1 //fail to register windows classSMEC_MESSAGEHOOK 2 //fail to set message hook SMEC_KEYHOOK 3 //fail to set keyboard hook SMEC_FILENOTFOUND 4 //not find the fileSMEC_DECOMPRESSERROR 5 //fail to decompress skin file SMEC_HEADERERROR 6 //skin file header errorSMEC_SKINVERSIONERROR 7 //skin file version not match SMEC_OBJECTNOTFOUND 8 //obect not foundSMEC_OBJECTTYPEUNMATCH 9 //Object type not matchSMEC_IMAGESIZEERROR 10 //Image size errorSMEC_CREATEIMAGELISTFAIL 11 //fail to create image list object SMEC_NOTIMPLEMENT 12 //The function not implementSMEC_PARAMETERERROR 13 //the function parameter error SMEC_INITSCROLLBARFAIL 14 //fail to skin scrollbarSMEC_LOADRESOURCEFAIL 15 //fail to load the resourceSMEC_FINDRESOURCEFAIL 16 //fail to find the resourceSMEC_WINDOWSXPNOTCOMPATIBLE 17 //not compatible with Windows XPSMEC_OUTOFMEMORY 18 //Out of memorySMEC_LIBARAYNOTINITIALIZED 19 //Library not initialized
如果我发现我换肤不成功,我用GetSkinMagicErrorCode获取到返回值 8,那对应的就是SMEC_OBJECTNOTFOUND,对象没有找到!
出错之后,如果哪个调用出错,就在哪个调用下面调用,这样来调试你的程序加载皮肤问题。
4.其他Skinmagic技巧
(1)停止自动给窗体加载皮肤
RemoveDialogSkin(); //停止自动给窗体加载皮肤,要是针对SetDialogSkin
(2)去掉指定窗口皮肤
RemoveWindowSkin(HWND hWnd);//去掉指定窗体上的皮肤
(3)为单个控件换肤
int SetControlSkin( HWND hWnd, //控件句柄 LPCTSTR pszName, //皮肤文件里面的皮肤对象 LPCTSTR pszOwnerSkinName //皮肤文件里面的窗口对象);
【未完待续】
- MFC使用SkinMagic使用详解【中级】
- MFC使用SkinMagic使用详解【初级】
- 使用SkinMagic美化MFC对话框
- skinMagic 使用
- 使用SkinMagic美化MFC的窗口
- MFC对话框使用SkinMagic界面库
- 如何使用SkinMagic库进行MFC界面皮肤美化
- SkinMagic皮肤使用
- VS2008 SkinMagic 使用
- SkinMagic使用及破解
- VS2008 SkinMagic 使用
- SkinMagic的使用
- 使用SkinMagic美化界面
- SkinMagic的使用
- SkinMagic的使用
- 使用SkinMagic Toolkit美化界面
- 使用SkinMagic美化VC界面
- 使用SkinMagic Toolkit美化界面
- HTML 第一节课
- 我为VB打抱不平--"一通百通 语言就是纸老虎"
- java调用sharepoint webservice
- An Example of Stepwise Refinement(BanishWinter)
- Net 类库开发的设计准则
- MFC使用SkinMagic使用详解【中级】
- Buddy System,伙伴系统
- C# 等号两边执行顺序
- 用数组模拟链表
- JS保留两位小数 四舍五入函数
- NASM IDE开发环境
- 要****成功的方法
- ListView(一)
- (C#)数字反转