建立一个窗体,让他透明(窗口后面的东西能即时看见),比如看视频,用这个窗口遮挡住视频窗口,要不影响看视频!
而且这个窗口在遮挡住视频窗口的时候不能点击视频窗口
简单的理解就是说在屏幕前方放个玻璃,你可以看见后面的图像,却不能点击到!
如何做到啊,我试过很多透明方法,好像都不行 
SetLayeredWindowAttributes 这个就更不行了,透明的很彻底,彻底到消失不见了,点不了窗口了都!
高手来啊!

解决方案 »

  1.   

    放个透明的pannel可以不
    raize里面有的。
      

  2.   

    两种办法
    1. 前置透明度为1的窗口,不仔细看,基本看不到
    2. 截获WNDPROC,干掉鼠标和键盘消息
      

  3.   

    更正一下,应该是,Alpha值4,和Alpha值5
      

  4.   

    换个思路,把那个视频窗口直接嵌到你的form里!
      

  5.   

    与楼主的遭遇相反的是,我采用 UpdateLayeredWindow时,出现鼠标穿透,而SetLayeredWindowAttributes则能够设置透明度! 未进行进一步的测试,但初步判定,在于其参数的设置问题!  ……仅作参考,不做正式发言!
      

  6.   

    HOOK鼠标消息。当鼠标在FORM的范围内,将鼠标消息传递给FORM
      

  7.   

     在Delphi中新建一个工程,加入一个窗体的继承过程:
    procedure TForm1.CreateWnd;
    begin
      inherited CreateWnd;
      SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
        WS_EX_TRANSPARENT or
        WS_EX_LAYERED);
    end;
            同时需要提前声明此过程:procedure CreateWnd; override;
            完整代码如下:
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        procedure CreateWnd; override;
        { Public declarations }
      end;
    var
      Form1: TForm1;
    implementation
    {$R *.dfm}
    procedure TForm1.CreateWnd;
    begin
      inherited CreateWnd;
      SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
        WS_EX_TRANSPARENT or
        WS_EX_LAYERED);
    end;
    end.
            编辑完成后运行,好象没有见到窗口,实际上窗体已经创建成功了,只是窗体是完全透明的,而且穿透了鼠标,所以感觉不到窗体的存在。
            如果需要窗体为半透明,可以制定窗体的AlphaBlend属性为True,并且指定AlphaBlendValue属性的值即可,255为不透明,0为完全透明。
            以上代码在Delphi7中编译成功。如果大家还有其他好方法的话请交流。