您现在的位置:首页 >> 界面报表 >> 界面报表 >> 内容

Delphi开发软件中的SKIN技术

时间:2011-9-3 15:25:15 点击:

  核心提示:软件的皮肤技术,简单的总结一下,可以用两个字来表示:自绘(或者说贴图)。当然,具体的效果如何,就要看你的基本功如何了。根据实现的方式,可以分为两类:A.对现有的标准控件的换肤。Appface,Skin...

软件的皮肤技术,简单的总结一下,可以用两个字来表示:自绘(或者说贴图)。当然,具体的效果如何,就要看你的基本功如何了。

根据实现的方式,可以分为两类:

A. 对现有的标准控件的换肤。Appface, Skin++, VCL Skin,SkinBuilder等一批换肤软件就是该类的代表。

B. 自己编写控件。AlphaConttrol, RZ系列控件就是该类的一些代表。这类控件库在delphi中尤其多。

编写皮肤需要基本功:

A. Windows 绘图技术。

既然是要换肤,当然要进行绘图,而要进行绘图,则必须了解Windows的一些绘图函数和Window控件的绘制过程。

B. Windows消息系统的了解。

Windows是一个消息驱动的系统,所以,我们必须对这个消息系统有所了解。我们必须了解一个控件是如何被绘制出来的,在绘制过程中都触发了那些消息。然后,我们过滤这些消息,在里面进行处理。

C. Windows API的了解。

对于一些特殊的控件,仅仅靠消息是不行的,必须依靠API HOOK技术。所以,我们必须对API有所了解。

第一类换肤的实现方法:子类化需要换肤的窗体,处理相应的消息。

 不同的控件可能有需要截获不同的消息。以BUTTON控件为例,我们需要截的消息有:WM_MOUSEMOVE,WM_PAINT,WM_ERASEBKGND,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBCLK,WM_MOUSELEAVE等等消息.

下面实现一个简单的皮肤,对进程中的所有BUTTON控件进行换肤。这个是我demo是我花了3,4个小时整理出来的,希望对喜欢探究界面处理有所帮助。

作者:一意孤行 来源:转载
  • 上一篇:实现拖动无标题窗口的5种方法
  • 下一篇:没有了
  • 共有评论 3相关评论
    发表我的评论
    • 大名:
    • 内容:
  • 盒子文章(www.2ccc.com) © 2017 版权所有 All Rights Reserved.
  • 沪ICP备05001939号