窗口真正的透明!并且不能点击到后面的东西

kiti 2010-10-21 09:54:23
建立一个窗体,让他透明(窗口后面的东西能即时看见),比如看视频,用这个窗口遮挡住视频窗口,要不影响看视频!
而且这个窗口在遮挡住视频窗口的时候不能点击视频窗口
简单的理解就是说在屏幕前方放个玻璃,你可以看见后面的图像,却不能点击到!
如何做到啊,我试过很多透明方法,好像都不行
SetLayeredWindowAttributes 这个就更不行了,透明的很彻底,彻底到消失不见了,点不了窗口了都!
高手来啊!
...全文
438 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
happycyp 2010-11-03
  • 打赏
  • 举报
回复
在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中编译成功。如果大家还有其他好方法的话请交流。
vivehua 2010-11-02
  • 打赏
  • 举报
回复
HOOK鼠标消息。当鼠标在FORM的范围内,将鼠标消息传递给FORM
iComputerLion 2010-11-01
  • 打赏
  • 举报
回复
与楼主的遭遇相反的是,我采用 UpdateLayeredWindow时,出现鼠标穿透,而SetLayeredWindowAttributes则能够设置透明度!

未进行进一步的测试,但初步判定,在于其参数的设置问题! ……仅作参考,不做正式发言!
ahjoe 2010-10-23
  • 打赏
  • 举报
回复
更正一下,应该是,Alpha值4,和Alpha值5
ahjoe 2010-10-23
  • 打赏
  • 举报
回复
透明度4,挡不住鼠标
透明度5,挡住了鼠标
haitao 2010-10-23
  • 打赏
  • 举报
回复
换个思路,把那个视频窗口直接嵌到你的form里!
Jekhn 2010-10-23
  • 打赏
  • 举报
回复
完全透明的话貌似鼠标点击就直接穿透过去了
CaesarDM 2010-10-21
  • 打赏
  • 举报
回复
两种办法
1. 前置透明度为1的窗口,不仔细看,基本看不到
2. 截获WNDPROC,干掉鼠标和键盘消息
maxubo 2010-10-21
  • 打赏
  • 举报
回复
对不起看错了。
你要窗体透明,这个应该是设置透明度。
maxubo 2010-10-21
  • 打赏
  • 举报
回复
放个透明的pannel可以不
raize里面有的。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧