如何让一个窗体不接受任何消息?(1分)

  • 主题发起人 主题发起人 xwings
  • 开始时间 开始时间
我曾经做过一个假的透明窗体,使用四个边做起来的,中空,哈哈!
 
你就只是要显示是吧?那不要做成窗口嘛,
GetDeskTopWindow
GetWindowDC
然后你就画就是了
 
呵呵,用application.onmessage自己搞定吧
 
对,用application.onmessage将任何消息都返回以屏蔽
 
以前有这样一个帖子。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=648162
不要光看标题。
 
我现在正在学习消息. 呵呵
 
接受答案了.
 
??? 1分?
 
对,就是一分. 因为没有答案. 如果你有.我给你200分 ;)
 
我服你了, n 个人测试过了,你居然还说没答案?!
Huzzz 兄真有先见之明阿,
这点分我不稀罕,我往外白送都是300,300的送,[:(!]
 
那你给我200分吧!
大家在这说了半天,结果你最后一句没有答案就全给否定了!
当然,还是跟我上面的回答一样,要Win2000或WinXP下才有效(Delphi6新提供的那两个属性也是Win2000下才有效的)
看你点了Button1后还能不能在Form上输入:
const
; WS_EX_LAYERED = $80000;
; WS_EX_TRANSPARENT = $20;
; LWA_ALPHA = $2;

procedure TForm2.Button1Click(Sender: TObject);
begin
; SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
; SetLayeredWindowAttributes(Handle, 0, 255, LWA_ALPHA);
; SetWindowLong(Handle, GWL_EXSTYLE, OldStyle Or WS_EX_LAYERED Or WS_EX_TRANSPARENT);
end;

end.
 
好像各位还没有理解xwings的意思,各位的意思是做一个透明窗体,可是做一个透明窗体有什么用呢?
这年头谁不会做透明窗体啊?他的意思是一个半透明的窗体,然后在这个窗体上面的所有操作,都会直接传给
被他遮住的下一个窗体,不是仅仅一个透明就可以做了的.说得够明白了吧.
 
那我就跟你说得更明白好了:
//设置窗体的透明度, 255为不透明, 0为完全透明,我下面用的是不透明窗体
; SetLayeredWindowAttributes(Handle, 0, 255, LWA_ALPHA);
//设置WS_EX_TRANSPARENT的EXSTYLE,窗体不接受任何消息,除了在任务栏上能激活Application
//外,你选不中窗体上的任何控件,就象不存在这个窗体一样。 如果只是要透明效果就不
//需要WS_EX_TRANSPARENT标记。
; SetWindowLong(Handle, GWL_EXSTYLE, OldStyle Or WS_EX_LAYERED Or WS_EX_TRANSPARENT);
 
谢谢 xianjun ;你的代码我测试过了, 除了哪个 oldstyle 不能用. 和要用jedi的api unit 之外. 完全达到我的要求.

当初你只说一句APi就搞定, 但是我怎么知道是哪一个API呢?

如果你早把代码贴上来.我就给你分了.
不过既然你回答了.我就不食言.来这里拿分吧. http://211.101.4.25/delphibbs/dispq.asp?lid=601166
 
呵呵, 不好意思
OldStyle: Integer;
OldStyle := GetWindowLong(Handle, GWL_EXSTYLE);
 
后退
顶部