用SkinMagic工具包创建换皮肤程序

本文详细介绍了使用SkinMagic工具包创建换肤程序的过程,包括所需文件、工程配置步骤、换肤代码实现等,并提供了解决顶部标题栏显示问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
SkinMagic 工具包创建换皮肤程序
如何使用:
下载 SkinMagic 的开发包,我用的开发包需要下面几样东西: SkinMagicLib.lib DETOURS.lib 两个库文件; .smf 文件(皮肤文件);还有个 SKinMagicLib.h 文件;这些就足够了 SkinMagicLib.lib 1199kB 的据说经处理不会显示 [Powered by SkinMagic] 但我这里用着会产生问题, 不得已还是用了 998kB 的)
新建工程后,将 SkinMagic 包中的 SkinMagicLib.h SkinMagicLib.lib DETOURS.lib 拷贝到所在文件夹下,点击 Project->Add To Project->Files, 包含到工程中。 (SkinMagicLib.h SkinMagicLib.lib 可以直接放在工程文件中, DETOURS.lib .smf 皮肤文件 可以放在 res 文件夹中 )
Resource View 中点击 Import 菜单引入几个 Skin 二进制文件放在相同的 “SKINMAGIC” 文件夹下,分别给起一个名字(见源程序)。
(4) stdafx.h 中加入 #include "SkinMagicLib.h"
#include <afxcmn.h>              // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include "SkinMagicLib.h"
//{{AFX_INSERT_LOCATION}}
(5)打开以你工程名字命名的CPP文件,在里面的InitInstance()函数里,
单文档
在       if (!ProcessShellCommand(cmdInfo))     return FALSE;
这一句的后面加上更换皮肤的关键代码:
/*********************** 换肤代码*********************************/
  VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), NULL , NULL, NULL ) ); //初始化类库
 VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() , "KROMO" ,"SKINMAGIC") );//从资源中加载皮肤 
  VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" )); // 对话框这句可不也可以放着
  VERIFY( 1 == SetDialogSkin( "Dialog" ) );
//m_pMainWnd->ShowWindow(SW_SHOW);
//m_pMainWnd->UpdateWindow();
/**************************************************************/
其中,第二句的作用是更换皮肤资源;(本来还有另外一种换肤的途径,直接从文件读取,不需要引导资源,更加简洁,但是这样子直接运行exe文件会出现问题,百思不得其解,只有舍弃)
(5)让你的程序更进一步,在菜单栏中添加更换皮肤项目,只需要在它的相应函数中写入: VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() , "KROMO" ,"SKINMAGIC") ,就可以实现换肤的功能了,当然这里"IDR_Devior"需要换成你想更换皮肤资源的ID;
(6)我在实际运行的时候发现了一个问题,编译时只能选择MFC共享的DLL,如果用动态的库链接则会出现问题,好像是说库与库之间命名冲突之类,可能是SkinMagicLib库的问题,我找了很多SkinMagicLib的库,试了很多遍都没有办法解决,只有在编译时注意一下,选择MFC共享的DLL;
(7) 在MainFrame中加入换皮肤菜单,及相应的函数,在函数中加载皮肤。
void CMainFrame::OnDevior()
{ LoadSkinFromResource( AfxGetInstanceHandle() , "DEVIOR" ,"SKINMAGIC") ;
}
参考资料:http://www.vckbase.com/document/viewdoc/?id=752
问题: 我用 skinmagic 做皮肤,感觉不错,可就是在顶部标题栏中有 "powered   by   skinmagic"
解决方法:    在标题后面加一大堆空格     ::SetWindowText(str);  (设置标题内容)
设置标题内容
OnInitDialog()      SetWindowText(" 标题内容 ”)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值