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

转载 2007年09月24日 15:21:00
 
 
下载源代码

  由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好。于是利用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皮肤文件,略为有些遗憾。 欢迎转载。

 

Delphi著名皮肤控件库大全

皮肤这东西很多人褒贬不一,有人认为程序做的好就行了,界面还是保持原生态来的稳定。的确,稳定是程序至关重要的一点,离开这点其他任何都无从谈起,但不可否认,无论是微软、苹果,还是大众用户,审美观越来越高,...
  • u013408061
  • u013408061
  • 2017年06月25日 23:58
  • 451

MFC学习之 皮肤使用方法 + 代码 + 下载地址

皮肤资源 下载地址: http://download.csdn.net/detail/abidepan/4511277 1、将SkinPPWTL.lib  skinppwtl.dll SkinPPW...
  • abidepan
  • abidepan
  • 2012年08月19日 19:45
  • 10869

MFC皮肤加载例子和皮肤使用方法

实例程序中使用方法: 1、将SkinPPWTL.lib  skinppwtl.dll SkinPPWTL.h三个文件及相应皮肤拷贝至工程文件夹下的Skin文件夹下 2、在StdAfx.h文件中加入#i...
  • liuyinghui523
  • liuyinghui523
  • 2014年01月23日 19:45
  • 2594

MFC皮肤加载例子和皮肤使用方法 .

  • 2014年01月23日 19:42
  • 7.09MB
  • 下载

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

  ...
  • jiangxinyu
  • jiangxinyu
  • 2007年09月24日 15:21
  • 2290

给VC/SDK中的应用程序加上皮肤(SKinSharp的皮肤库)

网上MFC加皮肤的资料蛮多的,SDK方面的相对较少,但是原理雷同,废话不多说了。 简单说明一下过程 1、复制 SkinH.dll、SkinH.lib、SkinH.h 以及皮肤文件MSN.she 至...
  • ccx_john
  • ccx_john
  • 2013年12月02日 22:49
  • 645

谈谈我是如何选择VC界面皮肤库

 选择VC界面库或皮肤库还是应当具体问题具体分析。比如: 1、如果你需要开发支持换肤功能的软件(类似千千静听、MSN、QQ等),可以使用DirectUI或DSkinlite,这类产品比较适合开...
  • yejun556688
  • yejun556688
  • 2014年07月08日 22:50
  • 1057

VC6.0完美界面换肤解决方案

完美界面换肤解决方案-、简介VC里边界面换肤是比较头痛的问题,网上有不少介绍,但是大多数仅仅提供Dll或者Lib,有代码的又有很多问题,效果很差。这几日突然想到一个解决方案,有源码,皮肤有一百多个,就...
  • favory
  • favory
  • 2008年06月14日 12:49
  • 6855

skinsharp 函数文档

错误代码: SRET_OK 0 操作成功 SRET_ERROR 1 操作失败 SRET_ERROR_READ 2 皮肤文件读取失败 SRET_ERROR_PARAM 3 参数错误 SRET_E...
  • u014053368
  • u014053368
  • 2014年04月02日 14:52
  • 483

VC皮肤库SkinSharp 1.0.6.6的使用

SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件。SkinSharp作为换肤控件,只需要在您的程序中添加一行代码,就能让您的界面焕然一新,并拥有多种主题风格和色调的动态切换功...
  • akof1314
  • akof1314
  • 2009年12月19日 15:50
  • 27108
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC界面窗口:从资源里面加载皮肤
举报原因:
原因补充:

(最多只允许输入30个字)