Q:为什么需要Skin++这样的产品为软件换肤?
A:随着微软Vista的发布,最终用户对软件界面的需求越来越高,不再满足于以往单调朴素的界面外观,逐渐倾向于符合软件使用环境的多种主题风格。作为软件提供商的您是否还对此无动于衷呢Skin++将帮助您提升软件的整体价值,为您的软件体验提升到一个崭新的高度!
Q:与同类产品相比Skin++有哪些优势?
A:与同类换肤产品相比,Skin++拥有以下四大优势:
技术优势:Skin++使用简单、换肤彻底、运行稳定、支持各种控件、支持所有的Windows平台、支持所有的流行开发工具、支持皮肤自定义设计、支持第三方皮肤资源导入、支持全球各种语言等。
服务优势:Skin++提供在线技术服务,真正中国人自己的换肤服务团队。在交流的语言上不存在任何障碍,在交流的及时性上有充分的保证。
商业优势:Skin++由上海勇进软件有限公司开发和销售,拥有一套成熟的商业销售流程,与客户签订销售合同,提供销售发票、提供产品光盘实物,开具产品使用授权书。
用户群优势:Skin++自发布以来,迅速在国内广泛传播,并获得了用户的一致好评。经过几年来的推广,Skin++拥有了几千家企业客户,同时拥有数量不菲的共享软件开发者客户。
Q:Skin++ For VB6 与其他同类产品的优势在什么地方?
A:Skin++除了在使用方便、换肤效果好、系统稳定等方面的整体优势外,还有以下几大方面的优势:
1、VB6 的Label支持
由于VB6 的Label是没有窗口句柄的控件,其他同类产品对这样的控件都不能支持,只能通过他们提供的一个Label控件来对原有程序中的
Label进行全部替换。这样做有2个方面的弊端:
a) 对程序中用到的Label控件全部替换,这将是一个巨大的工作量,违背用户使用换肤控件的初衷;
b) 对于用户自己编写的窗体中的Label可以逐个替换,但对于由VB6自动生成的窗体,就无法替换,因为VB6不提供这样的窗体设计时状态,对于这种窗体上的Label就只能是空白一片,原有的Label中文字消失了。
Skin++ 对 VB6的Label控件处理很好,用户换肤时不需要对Label进行替换,Skin++支持Label文字的原样显示,并且背景可以按用户对属性的设置,进行自动适应。
2、支持VB6的IDE环境调试运行与开发
由于Skin产品均采用Hook与Subclass技术,并且VB6的应用程序与IDE是处在同一个进程,所以当在IDE环境中调试应用程序时,Skin产品也会对IDE环境中的窗体和控件进行Hook与Subclass,当应用程序退出调试,但IDE上面的控件依然处于Skin状态,所以会导致VB6 IDE环境异常退出。这也是绝大多数同类产品的通病。由于Skin++采用了内核分离Hook技术,不会对VB6 IDE环境进行Hook,完美实现了在VB6 IDE环境中正常运行。
3、对VB6所有的标准控件的支持
由于VB6的特殊性,其标准控件的实现大多没有采用标准的做法,这也是其他同类产品无法对其进行换肤或完美换肤的根本原因。我们对VB6内核代码进行了详尽的分析,找到了其实现的细节,Skin++对VB6 上的所有控件均进行了完美换肤,典型的控件有ToolBar(多个版本)、StatusBar、TabCtrl(多个版本)、FlexGrid(MSFlexGrid、VSFlexGrid等多个网格控件)、GroupBox、Picture、Line、Label等。这些控件都是同类产品无法实现的。
Q:Skin++ For Visual C++与同类产品相比有哪些优势?
A:1、支持VC各种版本;
Skin++ 全面支持VC的各种版本:VC6、VC2002、VC2003、VC2005。同时支持VC.Net各种版本:VC.Net 2002、VC.Net 2003、VC.Net 2005。
2、支持WTL、ATL;
3、支持Win32 SDK 应用程序;
4、提供VC各种版本的静态链接库;
静态链接库需要每个版本一一对应,Skin++为每个版本的开发工具提供了8个静态链接库。
5、支持从VC资源调用皮肤文件;
6、Skin++在换肤细节方面有更多的优势:
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) 状态条:
某些换肤产品对状态条可以进行背景设置,但不能完全设计其全部的背景。只能设置StatusBar的Client区域的背景,对于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支持各种状态:正常、按下、高量、禁用。
Q:Skin++ For Visual Studio.Net 与同类产品相比有哪些优势?
A:Skin++除了在使用方便、换肤效果好、系统稳定等方面的整体优势外,还有以下几大方面的优势:
1、支持CheckBox、RadioBox、GroupBox与PushButton的自动区分;由于以上4种控件在用Windows API GetClassName获得的名字都为“Button”,控件风格也几乎一样,这样给控件类型的判断造成了很大问题,其他换肤产品需要用户手动设置控件的风格,这样做会需要用户修改原来已经写好的代码。更重要的是,.Net中默认的窗体没有设计状态时无法手动修改,这种情况下,就会导致对这4种控件类型进行误判从而产生不正确的结果。Skin++采用了与.Net平台交互的机制,准确地获得了平台中控件的类型、风格、当前值等各种信息。从而避免了错误的产生。
2、对VS2005最新的ToolStrip、StatusStrip、MenuBarStrip等控件的支持;其他换肤对以上几类最新的控件都不能很好地支持,Skin++ 可以对这些控件实现完美的支持。
Q:Skin++ For Delphi / C++Builder与同类产品相比有哪些优势?
A:Skin++ For Delphi / BCB沿用了在其他开发工具中的优点部分,采用截获程序窗体与控件创建事件来自动换肤。用户只要在Delphi / BCB程序入口处添加一行代码就完成对整个程序的换肤。
1、支持Delphi/BCB各种版本目前Delphi分4大类程序类型,Skin++ 全面支持Delphi各种类型的程序。
2、支持Delphi/BCB的所有控件Skin++ 对 DataGrid数据窗口也进行了换肤,并且处理了列头、滚动条等部分的界面。
Q:Skin++ 与 ActiveSkin相比有哪些优势?
A:ActiveSkin是国外的一款最早的相当优秀的换肤控件,但已于2004年开始停止升级和维护。随着换肤技术的不断进步,ActiveSkin的年久失修,逐渐显示其苍老而不具生机与活力。
Skin++在以下方面具有非常明显的优势:
1、换肤彻底性;
ActiveSkin只能对用户自己编写的窗口进行手动的换肤,并且无法对Windows标准窗体(如:打开文件对话框)进行换肤。
Skin++可以对用户程序中弹出的所有的窗体和控件进行自动换肤,并且可以对Windows标准窗体进行换肤,并且支持Windows中的各种控件(如右键菜单)的换肤。
2、支持开发工具的广泛性;
ActiveSkin虽然可以让各种开发工具进行调用,但由于其开发的初衷是给VC、VB、Delphi程序使用,所以对其他语言只能对窗口的标题和某几个控件进行换肤,所以严格来说,算不上对其他语言的支持。
Skin++ 不仅可以被各种开发工具进行调用,而且为各种开发工具量身定制了相应的Skin++版本,如:Skin++ For VB6、Skin++ For .Net。对于每个开发工具都进行单独测试与单独的维护,并充分考虑了关联开发工具的特性,使得Skin++更好地适用相应的开发工具。
3、对控件支持的全面性;
ActiveSkin对控件的支持是不全面的,如对于PowerBuilder工具中的TabCtrl,它就无法做到换肤。
Skin++对每种开发工具中的所有控件都能自动识别,并实现完美的换肤。
4、程序整体色调的一致性;
ActiveSkin对第三方控件的色调是无能为力的。用户程序上如果存在一个带灰色背景的第三方控件,它是无法做到界面协调一致的。
Skin++采用了Hook API 技术,可以将第三方控件的背景自动换成当前皮肤的色调。这样就可以实现界面的整体协调性。
5、使用的方便性;
ActiveSkin只能通过手工添加代码的方式对想要换肤的窗口进行换肤。这样就要求用户写很多代码,对用户程序变的复杂了。
Skin++只要在应用程序入口处写一句代码,就实现整个程序的换肤了。
Skin++ 采用Hook机制,对客户程序中创建的所有窗口进行自动截获并区分各种窗口风格与属性,实现自动而正确的换肤。
用户的程序可以做到原封不动,这样就可以使用户的界面与逻辑彻底分离,同时也降低了界面改动的风险性。
6、与客户程序的融合性;
ActiveSkin是ActiveX控件,无法提供静态链接库。
Skin++提供静态链接库,可以与客户的程序进行链接,运行时不再需要Dll的支持。
7、技术支持及时性;
ActiveSkin已于2004宣布停止维护,所以在使用中出现问题无法找到其提供商进行问题的修正。
Skin++提供全天候的在线技术咨询与解答。并且可以和国内的用户进行无障碍沟通,及时解决用户在使用中遇到的各种问题。
8、后续版本升级;
ActiveSkin不再提供升级版,最终版本是4.3。
Skin++一直在不断升级中。迎接奥运2008版的Skin++也在紧张的开发中。
Q:在什么类型的软件中需要用到Skin++这样的换肤控件呢?
A:凡是需要给用户一个全新操作体验的在Windows上运行的软件系统,均可以采用Skin++换肤控件。Skin++适用的软件类型大体分网络通讯类软件(如:即时聊天软件、网络电视软件、网络电话软件), 管理信息系统软件(如:ERP软件、HIS医院管理系统、电力系统类软件)。随着时代的进步,最终用户不再满足简单朴素的软件界面,原来的各种管理信息系统均有必要进行界面的改造与升级。
Q:如果我的程序不是VC、VB、Delphi、.Net等Skin++控件支持的语言开发的,要对他换肤我该如何做?
A:Skin++ 目前分换肤控件和换肤插件2种产品类型。
换肤控件可以在用户程序中调用Skin++。
换肤插件可以在用户程序的外部进行换肤。对于既不是VC、VB、Delphi等开发语言的程序,可以采用换肤插件进行换肤。
换肤插件的原理是:换肤插件(又称界面助手,无运行界面)将Skin++ Dll通过远程注入的方式注入到用户运行的进程中,并
自动启动换肤的功能,界面助手每次均在后台运行,不需要用户的干预,并可以随计算机每次启动自动开启服务。用户程序每次启动,界面助手能够对其截获和判断,实现自动换肤。这种方式的好处是可以不修改用户程序的任何代码。卸载皮肤灵活,不需要重新编译用户程序。
Q:Skin++的静态链接库,对我有什么用吗?
A:使用了静态链接库,您的程序运行时将不再需要附带Skin++ Dll文件。
Q:Unicode版本是什么概念?我可以不需要Unicode吗?
A:Unicode是一种字符编码方法,是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。如果您的程序有多语种功能,这时需要将您的程序编译成Unicode版本。不过目前VS2005的默认编码就是Unicode了。所以建议您将程序编译成Unicode版将会更通用。如果您的程序是Unicode版本的,那么配套的其他库文件包括Skin++也必须是Unicode版本的,否则无法编译通过和链接成功。
Q:皮肤转换工具是用来做什么的?
A:皮肤转换工具用于将目前主流的WindowsXP、WindowsVista、WindowsBlinds、StyleXP等主题皮肤转换成Skin++皮肤格式,可以让你拥有海量的皮肤资源,节约您大量设计皮肤的时间和精力。
Q:何为Skin++多线程支持?
A:如果用户的程序用到了多个线程,并且在多个线程中均有窗体界面的存在,那么就需要Skin++的多线程支持。如果Skin++不支持多线程,那么它只会对用户程序的主线程进行换肤,而不会对子线程中弹出的界面进行自动换肤。在复杂的用户系统中,Skin++多线程就显得尤为重要。
Q:Skin++会影响程序的运行效率吗?
A:Skin++采用贴图的模式与Windows直接涂颜色相比,在效率上会损失一点。但随着硬件配置的提高,Skin++对效率上产生的损失越来越变得不是那么重要了。
Q:Skin++是只用于开发好的用户程序吗?我该在项目的什么阶段使用Skin++呢?
A:Skin++不仅仅用于开发好的程序。在项目的开始阶段使用Skin++将会有更好的效果。因为在项目的一开始,所有的窗体与控件均没有形成,这个时候使用Skin++就很容易 引入Skin++对界面的开发视角和观点,对整个程序的界面布局和元素的取舍取到举足轻重的作用。在项目的后期采用Skin++,自然也可以做到界面的革新,但还是不如初期使用来的整体性和协调性,另外还要处理与前期引入其他第三方控件的兼容问题。Skin++无论在项目的启动阶段,还是在项目的收尾阶段,均可以使用。如果能在初期使用最好初期使用,如果项目已经接近尾声,要有与其他的第三方控件兼容的问题准备。兼容问题我们技术人员会帮助您处理好的。