【VC皮肤】AppFace的使用

英文官网: http://www.appface.com/eng/download-skins.htm

中文官网: http://www.appface.com/chs/download.htm


AppFace 软件皮肤界面开发包英文名称是 AppFace UI Development Kits,简称 AUDK ,它提供了一种将美术设计和编程完全分开的软件界面美化的解决方案。它的核心是换肤控件appface.dll,这是一个Windows 标准动态库,实质上是一个界面控件库。 换肤控件加载后能够按预定义的美化软件界面方案自动对进程内的所有Windows控件窗口以及边框窗口进行重绘,从而实现风格各异的软件界面。使用时只需先由美工制作好界面资源包(皮肤文件),而编程时只需执行加载和卸载换肤控件的代码,如果要更改软件界面,只需更换对应的皮肤文件就行了,极为方便。


AppFace支持三种皮肤加载方式: 从磁盘文件加载,从资源加载,从内存加载。

一. 从资源加载皮肤:

首先,要确保你下载了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() 成员函数中添加如下代码
CResSkinApp::InitInstance()
{
...
CAppFace af ; //line 1
af.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,_T("MYTYPE"),NULL) ; //line 2

CResSkinDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
...
af.Remove() ; //line 3
}

二. 从内存加载皮肤:

CResSkinApp::InitInstance()
{
...
CAppFace af ; //Init
//Load
if(HRSRC hr = ::FindResource(NULL,"IDR_MY_URF","MYTYPE"))
{
ULONG nResSize = ::SizeofResource(NULL,hr) ;
if(HGLOBAL hz = ::LoadResource(NULL,hr))
{
char* p = (char*)LockResource(hz);
if(p)
af.Start(p,GTP_LOAD_MEMORY,nResSize,NULL,NULL) ;
}
}
CResSkinDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
...
af.Remove() ; //Release
}
你可以使用这种方法从资源中加载其它数据。

需要注意的是: 如果将URF添加进资源时,资源ID没有用双引号括起来, 加载时必须这样写:
af.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,MAKEINTRESOURCE(_T("MYTYPE")),NULL)) ; //line 2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值