技术FAQ

 

http://www.uipower.com

概述:

       本文介绍列出用户提到的常见问题与回答。

 

纲要

1  为什么需要Skin++这样的产品为软件换肤?

2  我听到一些用户反映还是默认的控件样式好,看惯了也顺眼了

3  与同类产品相比Skin++有哪些优势?

4  Skin++ For VB6 与其他同类产品的优势在什么地方?

5  Skin++ For Visual C++与同类产品相比有哪些优势?

6  Skin++ For Visual Studio.Net 与同类产品相比有哪些优势?

7  Skin++ For Delphi / C++Builder与同类产品相比有哪些优势?

8  Skin++ 与 ActiveSkin相比有哪些优势?

9  在什么类型的软件中需要用到Skin++这样的换肤控件呢?

10 如果我的程序不是VC、VB、Delphi、.Net等Skin++控件支持的语言开发的,要对他换肤我该如何做?

11 Skin++的静态链接库,对我有什么用吗?

12 Unicode版本是什么概念?我可以不需要Unicode吗?

13 皮肤转换工具是用来做什么的?

14 何为Skin++多线程支持?

15 Skin++会影响程序的运行效率吗?

16 Skin++是只用于开发好的用户程序吗?我该在项目的什么阶段使用Skin++呢?

 

Q:为什么需要Skin++这样的产品为软件换肤

A随着微软Vista的发布,最终用户对软件界面的需求越来越高,不再满足于以往单调朴素的界面外观,逐渐倾向于符合软件使用环境的多种主题风格。作为软件提供商的您是否还对此无动于衷呢?Skin++将帮助您提升软件的整体价值,为您的软件体验提升到一个崭新的高度![回到纲要]

Q我听到一些用户反映还是默认的控件样式好,看惯了也顺眼了

A你说的这个情况的确存在,我本人使用Vista也经常使用经典模式,但也会随心情变化而变换主题风格。不过如果碰到需要界面漂亮的客户,可能就需要Skin++这样的软件了。美术体验毕竟是仁者见仁,智者见智。我们不能说个别用户喜欢朴素就认为全是需要朴素,也不能说个别用户喜欢华丽就认为全是华丽。其实Skin++的最大好处是可以设计各种类型的界面,当然也可以设计朴素类型的界面,毕竟它提供了一种可以随意设计界面的可能性。用户的需求是变化的,今天心情郁闷想看看简单的,明天心情好想换换华丽的。作为软件开发者和提供商,应该兼顾每种可能性。让各种用户需求均能满足。只考虑华丽需求或只考虑朴素需求均不够全面的。[回到纲要]

Q与同类产品相比Skin++有哪些优势?

A与同类换肤产品相比,Skin++拥有以下四大优势:

技术优势:Skin++使用简单、换肤彻底、运行稳定、支持各种控件、支持所有的Windows平台、支持所有的流行开发工具、支持皮肤自定义设计、支持第三方皮肤资源导入、支持全球各种语言等。

服务优势:Skin++提供在线技术服务,真正中国人自己的换肤服务团队。在交流的语言上不存在任何障碍,在交流的及时性上有充分的保证。

商业优势:Skin++由上海勇进软件有限公司开发和销售,拥有一套成熟的商业销售流程,与客户签订销售合同,提供销售发票、提供产品光盘实物,开具产品使用授权书。

       用户群优势:Skin++自发布以来,迅速在国内广泛传播,并获得了用户的一致好评。经过几年来的推广,Skin++拥有了几千家企业客户,同时拥有数量不菲的共享软件开发者客户。如浩方对战平台、PPStreamAVCon等用户量均在100万以上,从这个角度也充分说明了Skin++的稳定性和Skin++是真正商务软件换肤产品的首选。[回到纲要]

QSkin++ For VB6 与其他同类产品的优势在什么地方?      

ASkin++除了在使用方便、换肤效果好、系统稳定等方面的整体优势外,还有以下几大方面的优势:

1VB6 Label支持

              由于VB6 Label是没有窗口句柄的控件,其他同类产品对这样的控件都不能支持,只能通过他们提供的一个Label控件来对原有程序中的

              Label进行全部替换。这样做有2个方面的弊端:

a) 对程序中用到的Label控件全部替换,这将是一个巨大的工作量,违背用户使用换肤控件的初衷;

b) 对于用户自己编写的窗体中的Label可以逐个替换,但对于由VB6自动生成的窗体,就无法替换,因为VB6不提供这样的窗体设计时状态,对于这种窗体上的Label就只能是空白一片,原有的Label中文字消失了。

              Skin++ VB6Label控件处理很好,用户换肤时不需要对Label进行替换,Skin++支持Label文字的原样显示,并且背景可以按用户对属性的设置,进行自动适应。

       2、支持VB6IDE环境调试运行与开发

              由于Skin产品均采用HookSubclass技术,并且VB6的应用程序与IDE是处在同一个进程,所以当在IDE环境中调试应用程序时,Skin产品也会对IDE环境中的窗体和控件进行HookSubclass,当应用程序退出调试,但IDE上面的控件依然处于Skin状态,所以会导致VB6 IDE环境异常退出。这也是绝大多数同类产品的通病。由于Skin++采用了内核分离Hook技术,不会对VB6 IDE环境进行Hook,完美实现了在VB6 IDE环境中正常运行。

       3、对VB6所有的标准控件的支持

              由于VB6的特殊性,其标准控件的实现大多没有采用标准的做法,这也是其他同类产品无法对其进行换肤或完美换肤的根本原因。我们对VB6内核代码进行了详尽的分析,找到了其实现的细节,Skin++VB6 上的所有控件均进行了完美换肤,典型的控件有ToolBar(多个版本)、StatusBarTabCtrl(多个版本)、FlexGridMSFlexGridVSFlexGrid等多个网格控件)、GroupBoxPictureLineLabel等。这些控件都是同类产品无法实现的。[回到纲要]

QSkin++ For Visual C++与同类产品相比有哪些优势?

A1、支持VC各种版本;

Skin++ 全面支持VC的各种版本:VC6VC2002VC2003VC2005。同时支持VC.Net各种版本:VC.Net 2002VC.Net 2003VC.Net 2005

2、支持WTLATL

       3、支持Win32  SDK 应用程序;

       4、提供VC各种版本的静态链接库;

              静态链接库需要每个版本一一对应,Skin++为每个版本的开发工具提供了8静态链接库

       5、支持从VC资源调用皮肤文件;

       6Skin++在换肤细节方面有更多的优势:

              a) 标题栏:某些换肤产品的标题栏在失去焦点的瞬间会露出默认Windows标题栏,有明显的标题栏闪烁现象。Skin++没有该问题;

              b) 系统菜单:

b.1) 把程序切换到非最大化状态,这个时候的系统菜单的“还原”菜单项应该为禁用状态,而某些换肤产品的还原却是可用状态。同时在窗口最大化时,最大化菜单项也没有呈现禁用状态。Skin++没有该问题;

b.2) 某些换肤产品对菜单背景仅仅涂了一层白色,阴影部分很厚,感觉不协调。

Skin++对背景贴上了图片,并应用了最新的Windows阴影效果;

b.3) 菜单选择项:某些换肤产品对菜单项只是填充了一个矩形区域的颜色。Skin++对菜单项贴上TGA/PNG透明图片,并将菜单项文字做了颜色变换;

       b.4) 系统图标处菜单:在单击标题栏左侧的系统图标处,某些换肤产品会弹出当前鼠标位置的系统菜单。

Windows标准的弹出位置是在系统图片的左下方位置,不是在鼠标所在的位置。某些换肤产品的这个现象已经违背了Windows标准的操作方式,会让用户感觉不习惯,应该属于错误类型。这个部分属于编程的难点,很难准确控制。也是很多其他类型换肤产品的常见的错误。

Skin++ 在这个方面表现正常;

       b.5) 双击系统图标:在双击某些换肤产品的系统图标处,程序居然没有关闭。Windows标准操作应该是双击系统图标处关闭当前窗口。

              双击 Skin++ 系统图标后,当前窗口关闭,表现正常。对于一般常用该功能关闭窗口的用户来说,该错误会造成用户对该窗口操作无效;

              c) 系统按钮:

Windows标准的上下文帮助按钮应该紧跟在系统关闭按钮的后面,而某些换肤产品却和系统关闭按钮间隔了2个系统按钮的距离。另外某些换肤产品的标题栏的文字的位置向右多偏移了16个像数。Skin++ 的表现正常;

              d) 主菜单条:

                       d.1) 主菜单条项效果:

         某些换肤产品对主菜单条的每个菜单项只是做了颜色变换处理,效果看上去比较生硬。在需要贴菜单项背景图片的场合不适合应用。造成一定的使用局限性。Skin++ 对主菜单条的每个菜单项的4种状态(正常、高量、按下、禁用)均做了图形化处理,使得菜单项的表现力更强,更能应用到任何场合,包容了单纯背景和复杂背景的不同需求;

                       d.2) 主菜单条自动折行:

                Windows在处理主菜单条宽度不够显示下其内容的情况下,采用了2种模式:

                       一种是自动折行处理,另一种多出一个“>>”菜单项,便于用户找到更多的菜单项。    

                                     某些换肤产品在主菜单条宽度不够显示下其内容时,没有采取上面2种模式,当然也没有采用其他的模式,

只是简单地把多出的菜单项内容吞掉。这样的结果是用户无法操作到被隐藏的菜单项,造成操作上的不便。

在多文档子窗口最大化的情况下还会出现MDI系统按钮无法被点击到。影响子窗口还原、关闭和最小化功能。用户无法正常操作。

Skin++ 采用的是Windows的第一种自动折行处理,表现正常;

               e) 弹出菜单:

e.1) 子菜单自动弹出:

某些换肤产品在菜单上有一个比较严重的问题:不能自动弹出二级子菜单,必须用鼠标点击一下才能弹出,要看到查看里面的子菜单,必须鼠标点击。这点违背了Windows标准的操作方式,给用户造成一定的操作不便性;

                     e.2) 菜单的定制灵活度:

              某些换肤产品可以对菜单的背景采用颜色和图片2中填充方式。不能对菜单的字体、颜色、菜单项的图标和菜单的透明度进行设置。

                            用户在采用偏暗的菜单皮肤时,如果不能对菜单的文字颜色进行设置的话,就会造成菜单的文字看不清楚。

              用户如果想要在在菜单项前面添加图标,这个应用很常见,那么某些换肤产品就无能为力了。

              在有些应用中,需要做出比较酷的半透明效果,而某些换肤产品就不能做到了。

                            Skin++在菜单方面的支持比较全面,可以对以上几点均做了很好的支持。

              f) 状态条:

          某些换肤产品对状态条可以进行背景设置,但不能完全设计其全部的背景。只能设置StatusBarClient区域的背景,对于StatusBar的边框

                 还是呈现3D突出的效果。在很多皮肤主题中,这个3D效果是不能满足需求的。另外某些换肤产品对StatusBar的字体也不支持设置。

                               Skin++ 可以对状态条的每个Panel进行皮肤设置,并可以对StatusBar的字体进行设置,可以对文字对其方式进行设置;                                        g) 进度条:

                     某些换肤产品对进度可以设置其背景和前景图片或颜色,但不能对进度条设置进度文字。

              Skin++ 可以对进度条背景和前景进行图片和颜色的设置,并且可以对进度条设置进度文字,同时进度文字的字体、字体大小、字体颜色(覆盖色和非覆盖色)可以进行分别设置;

              h) ComboBox

              某些换肤产品对ComboBox控件可以进行背景边框和下拉按钮图片的设置。

但某些换肤产品对背景边框的设置无法做到完全的协调一致。看起来很是变扭。无法做到平坦的风格。

某些换肤产品对下拉按钮只是贴了一张带有箭头的小图片,在ComboBox下拉按钮大小不一致的情况下,

势必会产生下拉按钮图片拉伸后造成箭头部分扭曲变形。很大程度上影响了美感。也违背了美术人员设计的初衷。

Skin++ 可以对ComboBox控件进行背景边框和下拉按钮的设置,并支持Disabled状态时的风格一致。

              Skin++ 对下拉按钮的图片采用多层贴图设计。先在按钮上贴一个整体的不带箭头的背景图片,然后将带有透明通道的箭头图片居中绘制。这样就可以避免按钮拉伸后造成扭曲的情况;

              i) TabControl

              某些换肤产品支持2个方向的Tab,并且不能对Tab按钮的字体和文字颜色进行设计。如果在应用到暗色调的皮肤时,文字颜色还是默认的黑色的话,就会导致用户无法看清Tab按钮上的文字。

Skin++ Tab的四个方向的Tab全面支持,并且可以对Tab按钮的字体和文字颜色进行设计;

              j) TrackBar

              某些换肤产品对TrackBar只区分了横向和纵向。实际上TrackBar每个方向有3种状态:

              对于横向,TrackBar有向上、向下、双向;

              对于纵向,TrackBar 有向左、向右、双向。

                     而如果不对上面的3种状态进行严格区分,就造成界面显示不正确。

                     Skin++ TrackBar的各种状态、各种方向均做了全面的考虑;

              k) Spin:

                     某些换肤产品对Spin不支持Disalbed状态,Skin++ Spin支持各种状态:正常、按下、高量、禁用。[回到纲要]

QSkin++ For Visual Studio.Net 与同类产品相比有哪些优势?

ASkin++除了在使用方便、换肤效果好、系统稳定等方面的整体优势外,还有以下几大方面的优势:

1、   支持CheckBoxRadioBoxGroupBoxPushButton的自动区分;由于以上4种控件在用Windows API GetClassName获得的名字都为“Button”,控件风格也几乎一样,这样给控件类型的判断造成了很大问题,其他换肤产品需要用户手动设置控件的风格,这样做会需要用户修改原来已经写好的代码。更重要的是,.Net中默认的窗体没有设计状态时无法手动修改,这种情况下,&