从资源中加载皮肤, 使用免费界面库 AppFace For VC 0.2 美化您的软件-阿里云开发者社区

开发者社区> 杨粼波> 正文

从资源中加载皮肤, 使用免费界面库 AppFace For VC 0.2 美化您的软件

简介: 由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好。于是利用google一阵狂搜,嘿,真还找到了这样的一个开发库:AppFace For VC 0.2 。
+关注继续查看

由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好。于是利用google一阵狂搜,嘿,真还找到了这样的一个开发库:AppFace For VC 0.2 。



AppFace For VC 支持Win9X/NT/2K/XP,UNICODE/ANSI,能够对目标进程里的所有Widows标准控件,系统菜单,通用对话框等实现换肤,对非商业用途而言,它是完全免费的。关键的是AppFace的使用非常简单,很容易添加到已有的工程中。我使用的是 0.2 版,你也可以到它的网站 http://www.appface.com 去下载最新版本 。 

AppFace 支持三种皮肤加载方式,从磁盘文件加载,从资源加载,从内存加载。下面我就说说如何从资源加载URF皮肤文件: 

首先,要确保你下载了AppFace for VC 开发包,我们要用到其中的三个文件: "appface.h", "appface.dll" ,"gtclassic.urf" 。 

接着,创建一个 VC 可执行文件工程, MDI/SDI/DIALOG/WIN32 类型的都可以,我以创建一个DIALOG 工程 ResSkin 进行说明 。将"appface.h" 拷贝到该工程目录下,将"Appface.dll"拷贝到该工程的输出目录下,例如:"debug",将"gtclassic.urf"拷贝到资源所在目录下 。在VC 的项目管理器中进入资源管理项,在右键菜单中选择"Import",将"gtclassic.urf"添加进工程,资源类型设定为: "MYRESTYPE",资源ID设定为"IDR_MY_URF"。注意:资源ID 前面一定要加双引号 。



准备工作全部完成了,现在进入正题: 

1.在ResSkin.cpp 中加入: #include "appface.h" 

2.在CResSkinApp::InitInstance() 成员函数中添加如下代码

 

None.gifCResSkinApp::InitInstance() 
None.gif
ExpandedBlockStart.gif
InBlock.gif
InBlock.gifdot.gif 
InBlock.gif
InBlock.gifCAppFace af ; //line 1 
InBlock.gif

InBlock.gifaf.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,_T("MYTYPE"),NULL) ; //line 2 
InBlock.gif

InBlock.gif
InBlock.gif
InBlock.gifCResSkinDlg dlg; 
InBlock.gif
InBlock.gifm_pMainWnd = &dlg; 
InBlock.gif
InBlock.gifint nResponse = dlg.DoModal(); 
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gifdot.gif 
InBlock.gif
InBlock.gifaf.Remove() ; //line 3 
InBlock.gif

InBlock.gif
InBlock.gif
ExpandedBlockEnd.gif}
 
None.gif


编译... 一切搞定 !


3. 上面是官方的做法,由于appface 也支持从内存中加载urf,所以您也可以这样做:


 

None.gifCResSkinApp::InitInstance() 
None.gif
ExpandedBlockStart.gif
InBlock.gif
InBlock.gifdot.gif 
InBlock.gif
InBlock.gifCAppFace af ; //Init 
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif
//Load 
InBlock.gif

InBlock.gifif(HRSRC hr = ::FindResource(NULL,"IDR_MY_URF","MYTYPE")) 
InBlock.gif
ExpandedSubBlockStart.gif
InBlock.gif
InBlock.gifULONG nResSize = ::SizeofResource(NULL,hr) ; 
InBlock.gif
InBlock.gifif(HGLOBAL hz = ::LoadResource(NULL,hr)) 
InBlock.gif
ExpandedSubBlockStart.gif
InBlock.gif
InBlock.gifchar* p = (char*)LockResource(hz); 
InBlock.gif
InBlock.gifif(p) 
InBlock.gif
InBlock.gifaf.Start(p,GTP_LOAD_MEMORY,nResSize,NULL,NULL) ; 
InBlock.gif
ExpandedSubBlockEnd.gif}
 
InBlock.gif
ExpandedSubBlockEnd.gif}
 
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gifCResSkinDlg dlg; 
InBlock.gif
InBlock.gifm_pMainWnd = &dlg; 
InBlock.gif
InBlock.gifint nResponse = dlg.DoModal(); 
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gifdot.gif 
InBlock.gif
InBlock.gifaf.Remove() ; //Release 
InBlock.gif

InBlock.gif
InBlock.gif
ExpandedBlockEnd.gif}
 
None.gif



你可以使用这种方法从资源中加载其它数据。


需要注意的是: 如果将URF添加进资源时,资源ID没有用双引号括起来, 加载时必须这样写: 

af.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,MAKEINTRESOURCE(_T("MYTYPE")),NULL)) ; //line 2






四、结束语:


也尝试过使用其它的界面开发库,感觉AppFace是最容易使用的,加载速度最快,稳定性也不错。不过它的免费版只提供了三个urf皮肤文件,略为有些遗憾。 欢迎转载。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置
原文:IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置 站点--右键属性--http头 扩展名  mime类型.
1308 0
好工具推荐系列:跨平台安卓实时投屏软件QtScrcpy
好工具推荐系列:跨平台安卓实时投屏软件QtScrcpy
24 0
资源编排ROS之自定制资源(多云部署Terraform篇)
资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。 ROS资源编排接入了大量的阿里云资源,目前涉
1042 0
木马频繁造假 伪装成多个安全软件钓鱼
拿到一个“半成品”样本,病毒在文件属性中假冒360安全卫士,但图标明显不对。   运行后,还会假冒毒霸的病毒警告:   这里看一下正常的毒霸实时监控发现病毒时的窗口:   伪造的还挺象那么回事儿,只是文字太多露出马脚。
615 0
软件测试 | 读懂 Appium 日志,让测试效率翻倍!
Appium 服务器运行时会产生很多日志,但是很多人并不了解其中的意义,也无法掌握有用的信息。本文将详细解读如何读懂 Appium 日志,并让你的测试效率翻倍。
228 0
uni-app 开源资源汇总
如下是使用 uni-app 的开源案例,我们相信还有更多优秀案例,没有被我们采集到,欢迎大家到 项目案例征集 提交。
8267 0
+关注
杨粼波
网游的老兵
1135
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载