登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: vc 的 skin 皮肤控件     [回主站]     [分站链接]
标题
vc 的 skin 皮肤控件
clq
浏览(0) + 2010-06-01 17:20:54 发表 编辑

关键字:

vc 的 skin 皮肤控件

delphi 的是很多的,结果发现 vc 的居然都是收费的多,而且还是中国人开发的多!

clq
2010-6-1 17:30:44 发表 编辑

USkin  免费的.
http://www.neemedia.com/newsite/index.php
http://www.vckbase.com/document/viewdoc/?id=1645  例子
--------------------------------------------------
http://hi.baidu.com/fancyaj/blog/item/765cfdf26896fa13b07ec5c3.html


各种流行的界面换肤控件库比较
2006年12月07日 星期四 下午 08:07

用VC做程序的时候,如果对界面样式不满意怎么办?自己从各种控件基类继承,然后自绘么?对高手来说,这虽然不能算是难题,但是仍旧比较麻烦,对新手来说,连看什么书都不好说。那就没有更好的方法么?当然有!这就要用到一类称作“界面换肤”的工具包了。

且看这些工具包有什么作用。当你使用一个界面换肤工具包的后,在不改变代码的基础上(除了使用库函数),你的程序将变成另外一个样子,当然这个样子可以很cool,也可以很poor。下面我们来看看当今有什么好的换肤工具包可以使用。

1、SkinMagic

      这个是一个比较强大的换肤工具包,通过在自己的应用程序中包含SkinMagicTrial.dll、SkinMagicTrial.lib、 SkinMagicLib.h和*.smf皮肤文件即可实现界面换肤的功能。另外,它还自带了一个SkinBuilder,可以制作自己的皮肤文件,并应用到我们自己的应用程序中。它的功能很丰富,有近20个SDK形式的API可以调用,用以辅助换肤功能。它目前的最新版是2.4,可以到它老家下载http://www.appspeed.com,但是下载回来的只是一个试用版。试用版会有所限制,主要表现在:当我们打开添加了皮肤的应用程序的时候,会出现一个未注册的对话框;在SkinBuilder中会有一些限制,如未注册无法导出图片等。当然,这些限制完全可以通过反汇编的方法破解掉,有需要的朋友可以参看我的另一篇文章《关于SkinMagic的破解》。

2、Skin++

       这个换肤工具也比较不错,主要是从它的作用结果看出来的。这个由上海勇进公司开发的控件库现在也有很多版本,可以对应VC从6到8,而且支持其他语言。在它的官方主页上可以下载到最新2.0.1版的DEMO,也因为是DEMO,所以可用的功能少的可怜,只能看看人家的效果了。另外,现在网上有这个版本的破解文件,我没有做测试,不知能不能用。即使假设它能用,但是DEMO版的Skin++没有附带皮肤编辑器,所以其皮肤文件自然也没法自己制作了。

3、AppFace

       这也是个不错的换肤工具,附带皮肤编辑器,而且其皮肤编辑器还支持锁定皮肤的使用权限,当然这需要有序列号了。按照这个软件的说法,它在加载皮肤的工作上进行的优化,所以看起来它的执行效率还是不错的。网上可以下载到它的demo版,限制是没有一个安装程序,所以也就没法在发布软件的时候用了,而且开发库 appface.dll也有20天的试用限制,目前还没有破解。

4、USkin

       这个东西太棒了,而且完全是免费的,也用不着破解,它提供了免费库可以无限制的使用。另外它还配有一个十分专业的皮肤编辑器,用于制作*.u3类型的皮肤文件。当前的版本是2.2,不过按照官方的说法,现在已经测试并准备发布2.3版了。当然,天下没有免费的午餐,这样一个专业又cool的软件也是有一些限制的。这体现在它那个专业的皮肤编辑器里面:对于按钮的设计,免费版不支持高亮的效果,另外在我使用的时候,Frame和ProgressBar都没有 Background属性,这样就没法制作自己意愿的皮肤了,这多少是一种遗憾。其实现形式和SkinMagic类似。

5、SkinCrafter

       这个软件制作的皮肤效果相当的嚣张,当然也是足够cool了!它的皮肤编辑器也很强大,支持的功能也很多。不过这样嚣张的软件,在限制上更加嚣张了。首先是运行应用程序的时候会弹出一个对话框,其次是在应用程序的标题栏中添加未注册的字符串。这个最新版的破解我还没有找到,但是较低的1.8.2版的破解补丁我还是有的。另外,这个似乎对Windows2000的支持很不好,运行时会出现内核错误,而在Windows XP上则没问题。

6、ActiveSkin

       这个工具是用ActiveX组件技术实现的,在添加初始化代码的时候稍微有些复杂,而且使用方法也和之前的各种不太相同。它依赖%windir%\system32\activeskin.ocx来工作,不过这个ocx组件已经被破解了。它的功能也比较不错,只是其皮肤编辑器不支持丰富的控件,记忆中连ProgressBar都不能支持,不知道是不是demo的问题(破解只能使其不出现未注册对话框)。

7、DirectSkin

       这个是由WindowBlind的那个公司(www.stardock.com) 开发的,实现方法也是采用组件的方式,网上可以下到demo版,不提供皮肤编辑器,另外限制也比较多。关于它,我没有做过多的试验。

以上都是一些比较成熟的换肤工具,它们都提供了不错的定制方案,有的可以添加声音,有的可以支持alpha混合,有的可以支持动画,有的还可以支持直接从WindowBlind的皮肤导入,反正是五花八门,争奇斗艳。

另外还有一个比较小型的,某种程度上说还不成熟的换肤工具,比如SkinLoad、LibUIDK等。

要是让我做个总结的话,如果有一种结合了Skin++的多平台、SkinCrafter的皮肤编辑器、USkin的免费理念和SkinMagic的实现形式,那将是一个十分强大换肤工具。另外,如果有更多的高手可以写写如何自己制作换肤工具的话,对于想要学习的人来说,将是多么可贵的财富呵~

不过没有也没有关系,将来在WPF上做就好了。


clq
2010-6-1 17:32:19 发表 编辑

appface  居然还有 delphi 版本.

clq
2010-6-1 17:33:13 发表 编辑

ActiveSkin用于对话框程序

今天小用了一下ActiveSkin,做的还是很不错的,主要是使用起来很方便。

记录一下今天的使用过程,网上有一些,但是都说的不够详细,有的漏掉了重要的步骤

1、当然是安装ActiveSkin,我用的是ActiveSkin 4.3。

2、在你的对话框程序里面添加ActiveSkin 4.3控件

3、修改StdAfx.h,在里面添加如下代码:

#import "actskn43.ocx" no_implementation raw_interfaces_only raw_native_types

      using namespace ACTIVESKINLib;

#include <atlbase.h>

4、在你的应用程序的头文件中做如下声明

。。。。。。

public:

     CComQIPtr<ISkin> m_pSkin;

CTCPClientApp();

。。。。。。

extern CTCPClientApp theApp;

5、在应用程序的InitInstance中添加AfxEnableControlContainer()不然编译通过了运行时会运行不了。

BOOL CTCPClientApp::InitInstance()

{

AfxEnableControlContainer();

。。。。。。

}

6、在对话框程序的OnInitDialog中添加如下代码:

BOOL CTCPClientDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Set the icon for this dialog.   The framework does this automatically

//   when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

theApp.m_pSkin = GetDlgItem(IDC_SKIN)->GetControlUnknown();

CString ExeFileDir = GetProgPath();

CString SkinPath = ExeFileDir+"\\B-Studio.skn";

USES_CONVERSION;

theApp.m_pSkin->LoadSkin(T2W(SkinPath));

theApp.m_pSkin->ApplySkin((int)m_hWnd);

。。。。。。

7、最有一点很重要,网上很多地方都没有说到。就是在应用程序中重载如下函数,不然程序退出的时候总是出错。

int CTCPClientApp::ExitInstance()

{

m_pSkin.Release();

return CWinApp::ExitInstance();

}

以上主要参考ActiveSkin的例子程序而来。

clq
2010-6-1 17:51:55 发表 编辑


使用免费界面换肤软件 USkin

作者:thirdwolf

 下载源 代码

一、介绍

  我们都知道,Skin以前是一项比较难的技术。但至从WindowsXP推出以来,Skin或者说Theme变得 很普遍。虽然WindowsXP可以支持Theme,但当我们改变WindowsXP的风格时,所有支持WindowsXP风格的应用程序都变成一样的风 格,如何让我们的软件不仅具备Skin,而且要靓丽更吸引人更有个性更加与重不同呢。这里我给大家推荐一款换肤软件USkin。

为什么要使 用USkin?

1.节省您的开发时间。您不必花太多的精力在界面美化上。只需完成软件功能,加入3行代码即可实现换肤功能。
2.美化软件界面。
3.支持颜色主题。一个皮肤当100个用。
4.免费。不用花一分钱就能拥有换肤功能。
5.同样提供免费的皮肤编辑器。您可以自己DIY出个性界面。



图一 USkin界面效果


图二 USkinBuilder界面

二、USkin特性

  • 支持20多种Windows标准控件
  • 支持文件、颜色、打印、字体等标准对话框
  • 支持第三方/自定义控件
  • 支持所见即所得的皮肤文件编辑
  • 支持MDI/SDI/Dialog风格的应用程序
  • 支持WindowsBlind皮肤文件导入,多达万个现成皮肤供您使用
  • 支持颜色主题,一套皮肤可以演变成多种皮肤 *
  • 支持多种编程语言
  • 支持多线程
  • 支持动态换肤
  • 支持所有弹出菜单,包括Edit控件右键弹出菜单
  • 只需三行代码即可实现换肤
  • 支持ListView/TreeView等控件滚动条换肤
  • 皮肤资源文件所占空间小
  • 三、如何使用代码
    第一步,包含USkin.h头文件.
    #include "uskin.h"
    第二步在 InitInstance 函数里调用 USkinInit .
    BOOL CSDIApp::InitInstance()
    {

    InitCommonControls();

    CWinApp::InitInstance();

    if (!AfxOleInit())
    {
    AfxMessageBox(IDP_OLE_INIT_FAILED);
    return FALSE;
    }
    AfxEnableControlContainer();
    // Init USkin lib and load media skin file
    USkinInit(NULL,NULL,_T("media.u3"));
    SetRegistryKey(_T("Local App"));
    LoadStdProfileSettings(4);

    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CSDIDoc),
    RUNTIME_CLASS(CMainFrame),
    RUNTIME_CLASS(CSDIView));
    if (!pDocTemplate)
    return FALSE;
    AddDocTemplate(pDocTemplate);

    this->RegisterShellFileTypes();
    TCHAR sz[500];
    ::GetModuleFileName(NULL,sz,500);
    AfxMessageBox(sz);

    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    if (!ProcessShellCommand(cmdInfo))
    return FALSE;

    m_pMainWnd->ShowWindow(SW_SHOW);
    m_pMainWnd->UpdateWindow();

    //if you want do your own subclass,call USkinInit here
    //USkinInit(NULL,NULL,_T("media.u3"));
    return TRUE;
    }
    最后在退出前调用 USkinExit即可.
    int CSDIApp::ExitInstance()
    {
    USkinExit();
    return CWinApp::ExitInstance();
    }
    四、更新历史

    1.免费全新的SkinBuilder2.0.独创国内唯一完善的MDI模式的SkinBuilder,支持用户自定义皮 肤对象!
    2.重组核心架构,更快捷高效,更强的扩充.
    3.新增的绘制模式选项。独有半透明效果支持!!!
    4.皮肤对象支持消息事件!用来做Winamp太简单了!
    5.文档完善齐全!
    6.拥有版权证明!大家可以放心使用.
    7.修正1.0版所有已知错误。



    总数:4 页次:1/1 首页 尾页  
    总数:4 页次:1/1 首页 尾页  


    所在合集/目录



    发表评论:
    文本/html模式切换 插入图片 文本/html模式切换


    附件:



    NEWBT官方QQ群1: 276678893
    可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
    但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
    验证问题说明申请入群原因即可.

    Copyright © 2005-2020 clq, All Rights Reserved
    版权所有
    桂ICP备15002303号-1