VC界面窗口:从资源里面加载皮肤

 
 
下载源代码

  由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好。于是利用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() 成员函数中添加如下代码
      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

      }
  编译... 一切搞定 !
3、上面是官方的做法,由于appface 也支持从内存中加载urf,所以您也可以这样做:
      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


运行效果图

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

 
C++调用she格式皮肤(附150个she皮肤) VC++6.0编译测试通过 2017/11/19 01:28 7,508 skin.cpp 2017/11/19 00:46 3,909 skinH.dsp 2017/11/19 00:13 518 skinH.dsw 2017/11/19 01:29 41,984 skinH.ncb 2017/11/19 01:29 48,640 skinH.opt 2017/11/19 01:28 1,610 skinH.plg 2009/09/09 20:54 20,552 skinh.she 2009/09/15 10:29 86,528 SkinH_.dll 2010/07/31 12:16 11,740 弹珠.she 2010/07/19 13:51 23,718 彗星小助手皮肤 2010/07/31 13:39 10,008 恶魔.she 2010/08/02 05:39 5,088 方块点按钮.she 2010/08/02 06:47 27,155 方正淡紫.she 2011/11/01 16:14 15,574 时尚欣喜.she 2013/02/18 16:59 11,121 时空穿梭.she 2010/08/02 06:38 20,975 晶莹红绿灯.she 2010/08/02 05:59 7,715 智能滑锁.she 2010/07/31 12:22 19,752 木纹.she 2013/02/18 16:59 8,224 永不言败.she 2010/07/31 13:34 7,177 沙漠红唇.she 2010/08/02 06:19 6,896 泡泡按钮.she 2011/11/01 16:14 17,997 淡雅享受.she 2011/11/01 16:14 30,738 淡雅流光.she 2010/07/30 21:58 10,017 清新淡雅.she 2013/02/18 16:59 15,366 清爽蓝色.she 2011/11/01 16:14 29,447 渐变银白.she 2011/11/01 16:14 31,134 温暖木雕.she 2011/11/01 16:14 30,958 温馨家园.she 2011/11/01 16:14 20,863 灰色颓废.she 2009/08/18 23:23 12,564 炫绿.she 2011/11/01 16:14 12,564 炫绿亮彩.she 2010/07/31 12:37 18,056 牛仔裤.she 2011/11/01 16:14 19,770 白色火焰.she 2011/11/01 16:14 16,746 白色简约.she 2009/02/22 16:05 31,134 祝福礼物.she 2009/08/18 23:22 41,098 积木.she 2013/02/18 16:59 8,490 空间红.she 2010/08/02 05:37 24,495 简约时尚.she 2010/08/02 05:21 5,057 简约风范.she 2011/11/01 16:14 41,098 简谱积木.she 2009/12/25 01:51 39,378 粉色.she 2011/11/01 16:14 8,321 精仿华硕.she 2013/02/18 16:59 10,591 紫定义.she 2010/07/31 13:42 10,591 紫色风格.she 2011/11/01 16:14 26,370 红动中国.she 2013/02/18 16:59 26,506 红墨水.she 2009/02/22 16:04 29,447 红绿灯.she 2010/07/31 12:31 26,506 红色Q糖.she 2013/02/18 16:59 47,052 红蓝渐变.she 2010/07/31 13:48 32,808 纯白深红.she 2011/11/01 16:14 23,603 经典xp.she 等等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值