SkinFeature的使用
来源:互联网 发布:ubuntu联网后无法上网 编辑:程序博客网 时间:2024/05/16 23:42
SkinFeature皮肤界面控件介绍
SkinFeature 完全支持Win9XNT2KXP,UNICODE、ANSI,能够对目标进程里的所有Widows标准控件,系统菜单,通用对话框等实现换肤。
而且完全支持PNG图象格式。同时,皮肤文件rss可以设置密码!对非商业用途而言,它是完全免费的。
关键的是SkinFeature的使用非常简单,很容易添加到已有的工程中。
SkinFeature 支持三种皮肤加载方式,从磁盘文件加载,从资源加载,从内存加载。
下面就说说如何加载磁盘的普通rss皮肤文件 (以VC对话框工程为例)
首先,我们要用到的4个文件 SkinFeature.h, SkinFeature.lib,SkinFeature.dll ,Coolorange.rss 。
接着,将上述4个文件拷贝到该工程目录下
准备工作全部完成了,现在进入正题
1.在MYSkin.cpp文件中加入
#pragma comment (lib,"SkinFeature")
#include "SkinFeature.h"
2.在CMYSkinApp::InitInstance() 成员函数中添加如下代码
CResSkinApp::InitInstance()
{
//... 添加以下两行
InitializeSkin(); //初始化skinfeature界面库,这句话可加可不加,主要是当多线程中换肤需要加。
LoadSkinFile("Coolorange.rss"); //
CResSkinDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
//...
}
int CResSkinApp::ExitInstance()
{
//退出skinfeature界面库,释放内存资源。
UnLoadSkin();
return CWinApp::ExitInstance();
}
编译... 搞定 !
发布时,执行目录内应携带SkinFeature.dll ,Coolorange.rss这两个文件。
=========================================
以资源文件的方式加载rss皮肤文件(以VC对话框工程为例)
首先,4个文件 SkinFeature.h, SkinFeature.lib,SkinFeature.dll ,Coolorange.rss
接着,将前3个文件拷贝到该工程目录下, 将"Coolorange.rss"拷贝到资源所在目录下 。
将"Coolorange.rss"添加进VC工程,资源类型设定为: "RSS",资源ID设定为"IDR_RSS"。
注意:资源ID一定要加双引号 。
进入正题:
1.在ResSkin.cpp 中加入: #include "SkinFeature.h"
2.在CResSkinApp::InitInstance() 成员函数中添加如下代码
CResSkinApp::InitInstance()
{
//...
//只需添加如下一行代码从资源文件加载skinfeature 皮肤文件 rss 。其中最后一个参数是皮肤文件的密码
LoadSkinFromResource(AfxGetInstanceHandle(),(LPTSTR)MAKEINTRESOURCE(IDR_RSS),_T("rss"),_T("Coolorange.rss"), "");
CResSkinDlg dlg;
//...
}
int CResSkinApp::ExitInstance()
{
//退出skinfeature界面库,释放内存资源。
UnLoadSkin();
return CWinApp::ExitInstance();
}
=========================================
动态链接方式:(不用SkinFeature.h, SkinFeature.lib)
将SkinFeature.dll ,Coolorange.rss拷贝到工程目录下
第一步:在ResSkin.cpp函数体外,公共代码处添加
typedef bool (Dll_LoadSkinFile) (LPCTSTR pszFileName, LPCTSTR pszPassWord = NULL);//定义函数类型,返回值和参数要和DLL中定义的一样
typedef bool (Dll_UnLoadSkin) ( );
Dll_LoadSkinFile* pLoadSkinFile;//生成个函数指针
Dll_UnLoadSkin* pUnLoadSkin;//生成个函数指针
HINSTANCE hInstance;
第二步:InitInstance() 中添加
CResSkinApp::InitInstance()
{
//... 添加下面这3句
hInstance=LoadLibrary("SkinFeature.dll");//加载DLL
pLoadSkinFile=(Dll_LoadSkinFile*)GetProcAddress(hInstance,"LoadSkinFile");
(*pLoadSkinFile)("Coolorange.rss",""); //使用函数
CResSkinDlg dlg;
//...
}
int CResSkinApp::ExitInstance()
{
(*pUnLoadSkin) ( ); //卸载skinfeature界面库,释放内存资源
VERIFY(FreeLibrary(hInstance)) ;//卸载DLL
return CWinApp::ExitInstance();
}
不过,经过测试Debug版可能会提示错误,Release版OK。
还要提醒一下,皮肤文件名最好不要改为其他皮肤的名字,否则程序会死。
- SkinFeature的使用
- 使用skinfeature在您的程序中界面更换皮肤
- SkinFeature 换肤库 抄袭!无耻!
- skinfeature界面产品特点介绍
- 郑重推荐界面换肤组件skinfeature
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- CSDN,我来了
- 人际关系三定律
- CheckBox当中用到的全选js
- 在数组中找到相同的值
- WIndows的CLSID
- SkinFeature的使用
- 金融+投资+IT+PM
- “前世五百次回眸,才换来今生的擦肩而过”
- 关键字static的作用是什么
- magento connect manage出现404或者500内部错误的解决办法
- 编写一个程序,求满足以下条件 n 的最大值: 1^1+2^2+2^3+…+2^n<1000
- AS初学经验谈
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?
- JPA关联注解