zoukankan      html  css  js  c++  java
  • delphi制作透明的控件

    http://hi.baidu.com/huoyl1982/blog/item/bb3ea6812a2da0d09123d93a.html

    透明的控件, 一般继承自TGraphicControl的
    (就是那些没有handle属性, 不能有focus的控件, 如image)
    都有Transparent属性. 对TWinControl类的控件, 要实现透明只要完成以下
    四步基本上就成了.

    1.在Create中设定ControlStyle :=ControlStyle - [csOpaque];

    2. override 它的CreateParams方法, exstyle 里加上WS_EX_TRANSPARENT.

    3. 修改它的parent的window style, 去掉WS_CLIPCHILDREN.
    inherited CreateParams(Params);
    with Params do
    begin
    { 完全重画 }
    Style := Style and not WS_CLIPCHILDREN;
    Style := Style and not WS_CLIPSIBLINGS;
    { 增加透明 }
    ExStyle := ExStyle or WS_EX_TRANSPARENT;
    end;

    4. 截获WM_ERASEBKGND, 什么都不做直接返回1.(不搽除背景)

    一般有上面3步能成. 有些控件比如TPanel, 在它的paint中用了fillrect,
    所以要实现透明的话还要override 它的paint方法, 自己画.
    按钮透明需要进一步处理.
    createparams里加上style := style or BS_OWNERDRAW;
    然后在WM_DRAWITEM中自己画吧

    HOOK钩子详细介绍
    基本概念
    钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
    钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控

    制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

  • 相关阅读:
    第5次系统综合实践
    第4次系统综合实践
    第3次系统综合实践
    第2次实践作业
    第1次实践作业
    第03组 Beta版本演示
    第03组 Beta冲刺(4/4)
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
  • 原文地址:https://www.cnblogs.com/chulia20002001/p/2038029.html
Copyright © 2011-2022 走看看