让一个窗体不接受消息后 窗体中的控件仍能接受消息(200分)

  • 主题发起人 主题发起人 水流星
  • 开始时间 开始时间

水流星

Unregistered / Unconfirmed
GUEST, unregistred user!
让一个窗体不接受消息后 窗体中的控件仍能接受消息

搜索了下 找到能使窗体不接受消息的
原提问问题是:
我有个窗体. 始终在最上方. 我要它不接受任何如键盘.鼠标.消息 好像她不存在一样.并且可以把消息传递到它下面的窗体.
比如下面有个notepad 我打字. 它就透过窗体在下面的notepad里打字. 我单击鼠标在窗体上拖动.
它就在下面的notepad里选择文本拖动了.

实现:
const
WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_ALPHA = $2;

procedure TForm2.Button1Click(Sender: TObject);
var
OldStyle: Integer;
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.
但我窗体上有Button按钮 我想这按钮仍然能接受到消息,至少能接受鼠标消息 点击。这又要如何实现呢?
 
[red]窗体不接受任何消息后 窗体中的控件仍能接受消息[/red] 矛盾的语句
 
皮将不存,毛之焉附!
窗体不接受任何消息 是不可能的。
但是可以绕过去。窗体接受的消息 除了你所须要的之外其它的全都不处理。
 
我这个问题是大家来找碴吗??我知道我表达不好 但我想看过的 还是能理解我的意思的~~~
 
过滤掉所有的你指定窗体的消息并且自己Dispatch往其它的窗体(所谓的组件)
 

Similar threads

I
回复
0
查看
599
import
I
I
回复
0
查看
642
import
I
I
回复
0
查看
588
import
I
I
回复
0
查看
620
import
I
后退
顶部