现在的位置: 首页 > 综合 > 正文

界面编程总结(5)

2013年08月24日 ⁄ 综合 ⁄ 共 5433字 ⁄ 字号 评论关闭

利用界面开发包美化界面

 

 

在程序设计中为了界面和业务逻辑相分离,将程序员从烦琐的界面设计中彻底解放出来,将精力集中在业务功能的实现上,提高产品的开发效率。可以利用换肤软件开发包快速开发漂亮的软件。本文主要介绍几种换肤软件开发包,常见几种换肤软件开发包包括SkinMagic、SkinFeatureSkin++、AppFace等等。

 

一、SkinMagic

SkinMagic Toolkit是一套功能强大的界面解决方案库,我们提倡界面和业务逻辑相分离,将程序员从烦琐的界面设计中彻底解放出来,将精力集中在业务功能的实现上,提高产品的开发效率。网络上的SkinMagic版本繁多,而且试用版,破解版并存,各版本之间支持的皮肤文件也不尽相同,因此经常有人在网上询问为何添加了SkinMagic没有效果甚至导致程序崩溃之类的问题。这里有一个可用的破解版本(包含VC6使用的库和支持的常用皮肤文件)SkinMagicToolkitV2.2.31

(下载地址:http://wh.hust.colin.googlepages.com/SkinMagicToolkit2.2.3.1.rar)。

SkinMagic破解版下载: http://www.live-share.com/files/348005/SkinMagic.rar.html

 

1:文件说明

SkinMagicLib.h 必须的头文件,请添加到工程中。

SkinMagic.lib + SkinMagic.dll 动态链接库配套使用

编译时需要在工程中添加SkinMagic.dll,程序运行时需要SkinMagic.dll

 

以下版本的编译出来的程序运行时不再依赖SkinMagic.dll

SkinMagicLibMD6.lib 静态链接库,用于VC6的Release版编译

SkinMagicLibMT6.lib 静态链接库,用于VC6的Debug版编译

 

2:使用步骤

1).把SkinMagicLib.h, SkinMagicLibMT6.lib, SkinMagicLibMD6.lib放到你的VC6工程目录下

2).在StdAfx.h中添加

#include "SkinMagicLib.h"

3).在工程设置中添加对应的库

Win32 Release中填上SkinMagicLibMD6.lib

Win32 Debug中填上SkinMagicLibMT6.lib

4).在InitInstance()函数的开始处添加初始化SkinMagic资源的代码。

VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));

5).在InitInstance()函数中加载皮肤文件并设置程序皮肤。

你可以选择添加皮肤文件到资源中,并编译到程序中。或者程序在运行时动态加载皮肤文件

a. 比如添加corona.smf,设置资源类型为"SKINMAGIC",  资源ID为IDR_SKIN_CORONA

 

 CBossKeyDlg dlg;

 m_pMainWnd = &dlg;

 

 //加载SkinMagic皮肤

 VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_CORONA, "SKINMAGIC"));

 VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));

 VERIFY(1 == SetDialogSkin("Dialog"));

 

 int nResponse = dlg.DoModalEx(bStartShow);

 if (nResponse == IDOK)

 {

 }

 else if (nResponse == IDCANCEL)

 {

 }

b. 程序在运行时动态加载皮肤文件

 

 CBossKeyDlg dlg;

 m_pMainWnd = &dlg;

 

 //加载SkinMagic皮肤

 VERIFY(1 == LoadSkinFile("corona.smf"));

 VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));

 VERIFY(1 == SetDialogSkin("Dialog"));

 

 int nResponse = dlg.DoModalEx(bStartShow);

 if (nResponse == IDOK)

 {

 }

 else if (nResponse == IDCANCEL)

 {

 }

 

6).在ExitInstance()函数中释放SkinMagic资源

 //释放SkinMagic资源:

 ExitSkinMagicLib();

 

二、Skin++

作为勇进软件的旗帜性产品Skin++ For VC版,具有简单易用、嵌入系统方便、运行稳定、兼容性强等特点。提供了所有标准控件的Skin解决方案,可以完美地设计程序每部分的界面细节,完全做到了所见即所得的界面效果,满足了目前所有的Visual C++应用程序界面开发需求。本产品彻底改变了Visual C++开发界面难的问题,使用本产品可以对您已有的系统进行方便快捷的界面改造,也可以在系统开发的初期,极大地提高系统开发的进度,并得到满意的界面效果。

Skin++使用方法:

1.加载Skin++
0).将SkinPlusPlusDLL.lib,SkinPlusPlus.h,XPCorona.ssk都复制到当前目录

1).在(VC7)"项目->属性->链接器->输入->附加依赖项"中加入SkinPlusPlusDLL.lib
或 在(VC6)"Project->Settings->Link->Object/library"中加入SkinPlusPlusDLL.lib
在工程中加入SkinPlusPlus.h文件。

2).在你的程序中包含头文件
#include "SkinPlusPlus.h"

3).在程序中加入初始化语句InitInstance()

InitializeSkin(_T("XPCorona.ssk");

注:以上假定,如果不是请更改路径设置。

2.卸载Skin++

在程序的卸载函数中加入ExitInstance()

ExitSkin();

3.更换皮肤

执行函数LoadSkin即可以实现动态换肤

LoadSkin(_T("XPCorona.ssk");

4.函数说明

InitializeSkin是SKin++的初始化函数,您可以采用如下参数加载Skin++
InitializeSkin(皮肤文件名);
注:如果皮肤文件名中没有路径则采用当前目录。

LoadSkin(皮肤文件名);
注:如果皮肤文件名中没有路径则采用当前目录。

5.使用分隔条窗体的应注意的问题

您必须SKINPLUSPLUS_SPLITTER()和SKINPLUSPLUS_INIT_SPLITTER(m_wndSplitter)宏

注:SKINPLUSPLUS_INIT_SPLITTER一般传入分隔条对象m_wndSplitter

例如:

......................

SKINPLUSPLUS_SPLITTER()

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
       SKINPLUSPLUS_INIT_SPLITTER(m_wndSplitter);

附:Skin++ 2.10破解版(内带大量漂亮皮肤)下载:http://www.live-share.com/files/348012/SkinMagic.rar.html

 

三、AppFace

如今的开发者越来越重视美化软件界面。为了实现那些漂亮的窗口以得到用户的青睐,开发者往往会通过internet去寻找很多的界面控件,然后把它们一个一个的运用在当前的工程当中。需要用到界面控件的地方越多,编程量就越大,软件总体的质量也就越难控制。

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

具体参考:http://www.appface.com/chs/product.htm

 

四、WebUI Studio.NET 2008 (web 界面开发包)

WebUI Studio.NET是一套创建ASP.NET 2.0 web应用程序不可缺少的控件组合包。它为各种网络应用程序开发提供统一标准的控件系统,各产品之间形成如"磐岩"般坚固的结构以及紧密组合。因此,WebUI Studio.NET?极大的提高了开发人员的工作效率,从而增强整个企业的生命力。同时,通过采用最先进的技术以及创新意识提高了WEB应用程序的价值,最大程度满足了客户及最终用户的需求。

下载地址:http://www.componentcn.com/pro_view.asp?id=521

 

五、USkin

USkin是一套用于换肤的sdk。目前还在不断完善阶段。最终目标是提供对个人免费的换肤软件。
使用方法:
同其他类似软件一样。使用USkin非常简单.
1.调用USkin_InitUSkin进行初始化
2.调用USkin_LoadUSkin进行换肤
3.调用USkin_ExitUSkin退出

开发包下载:

http://www.downloadatoz.com/software-development_directory/uskin/

http://www.skycn.com/soft/23449.html

使用实例:http://www.vckbase.com/document/viewdoc/?id=1645

 

六、SkinFeature

SkinFeature皮肤界面控件介绍
SkinFeature 完全支持Win9X/NT/2K/XP,UNICODE/ANSI,能够对目标进程里的所有Widows标准控件,系统菜单,通用对话框等实现换肤。
而且完全支持PNG图象格式,对于界面美工来说是一个非常可喜的事情。同时,皮肤文件rss可以设置密码,对于我们保护自己的皮肤文件,保护版权来说是非常有必要的!对非商业用途而言,它是完全免费的。关键的是SkinFeature的使用非常简单,很容易添加到已有的工程中。我使用的是 1.0 ,你也可以到它的网站 http://www.SkinFeature.com 去下载最新版本
SkinFeature 支持三种皮肤加载方式,从磁盘文件加载,从资源加载,从内存加载。下面我就说说如何加载磁盘的普通rss皮肤文件:
首先,要确保你下载了SkinFeature 开发包,我们要用到其中的三个文件: "SkinFeature.h", "SkinFeature.dll" ,"Coolorange.rss"
接着,创建一个 VC 可执行文件工程, MDI/SDI/DIALOG/WIN32 类型的都可以,我以创建一个DIALOG 工程 ResSkin 进行说明 。将"SkinFeature.h" 拷贝到该工程目录下,"SkinFeature.dll""Coolorange.rss" 拷贝到该工程的输出目录下,例如:"debug/"
 
准备工作全部完成了,现在进入正题:
1.ResSkin.cpp 中加入: #include "SkinFeature.h"
2.CResSkinApp::InitInstance() 成员函数中添加如下代码
CResSkinApp::InitInstance()
{
      ...
      //只需添加如下一行代码从文件加载skinfeature 皮肤文件 rss 。其中最后一个参数是皮肤文件的密码
      //如果有的rss皮肤文件是用户自己希望得到保护,不让别人使用的。会设置加载密码
      InitializeSkin(); //初始化skinfeature界面库,这句话可加可不加,主要是当多线程中换肤需要加。
      LoadSkinFile("..//skin//Coolorange.rss"); //line 1
      CResSkinDlg dlg;
      m_pMainWnd = &dlg;
      int nResponse = dlg.DoModal();
      ...
}
int CResSkinApp::ExitInstance()
{
      //退出skinfeature界面库,释放内存资源。
      UnLoadSkin();            //line 2
    return CWinApp::ExitInstance();  
}
编译... 一切搞定 ! 也尝试过使用其它的界面开发库,感觉SkinFeature是最容易使用的,加载速度最快,稳定性也不错。

skinfeature动态界面控件破解版:http://www.winu.cn/htmls/872/110/

 

 

 

 

抱歉!评论已关闭.