Tapplication 的 OnMessage问题???

myhero811104 2003-03-19 11:52:31
我想让我弹出的窗体用户只能关闭,不能进行其他的操作(包括对窗体中控件的操作),我写了下面的代码,弹出的窗体却什么都不响应了,而且关闭程序时要等好久大家帮看看有什么问题,或有什么其他的方法实现我的要求
var
fhandle :HWND;

procedure TForm1.AppMessageHandler(var Msg: TMsg; var Handled: Boolean);
var
m:Integer;
begin
Handled := false;
if(Msg.hwnd = fhandle) then
begin
if(Msg.message<>WM_CLOSE) then
begin
Handled := true;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Show;
fhandle := form2.Handle;
Application.OnMessage := AppMessageHandler;
end;
...全文
41 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gang75 2003-03-22
  • 打赏
  • 举报
回复
up
citytramper 2003-03-22
  • 打赏
  • 举报
回复
gz
Randy_Mic 2003-03-21
  • 打赏
  • 举报
回复
这样的话还有办法:
1 按我说的改造消息函数
2 或者,用CreateParented方法
Randy_Mic 2003-03-20
  • 打赏
  • 举报
回复
服了you,不是让你放panel了吗!
myhero811104 2003-03-20
  • 打赏
  • 举报
回复
有些消息是得不到的,无法屏蔽
并且真的全部屏蔽,那怎么关闭窗口呢
对于我来说,只是得到一个TForm我不可能去改动窗体的东西
Randy_Mic 2003-03-20
  • 打赏
  • 举报
回复
把消息处理函数改为这样试试:
procedure TForm1.AppMessageHandler(var Msg: TMsg; var Handled: Boolean);
begin
if(Msg.hwnd = fhandle) then
if 是鼠标或键盘消息 then
Handld := True;
end;
其实,对于你的要求有一个简单的办法:
在窗体上放一个Panel,设为alClient,然后所有的控件都放在Panel上,最后设Panel的Enable属性为False就可以了
myhero811104 2003-03-20
  • 打赏
  • 举报
回复
别人给我的接口,我得到一个TForm,至于上面有什么控件,要执行什么事件,他已经写好,对我来说不知道,也不关心,我只要窗口暂时只能关闭不能做别的事件就行了
也不许我对窗口进行改造
Randy_Mic 2003-03-19
  • 打赏
  • 举报
回复
帮你Up
myhero811104 2003-03-19
  • 打赏
  • 举报
回复
没人捧捧场吗??
可怜可怜我吧
myhero811104 2003-03-19
  • 打赏
  • 举报
回复
对于静态设计的窗口可以添加消息处理函数来处理消息
那么我可不可以对动态产生的窗口添加消息处理呢
xzgyb 2003-03-19
  • 打赏
  • 举报
回复
如果实现这样目的不应该用OnMessage,象WM_PAINT之类的进队消息都被屏蔽了
当然程序没有反应了,
可以把窗体上的控件都Disabled了
var
I : Integer;
begin
for I := 0 to Self.ControlCount - 1 do
Self.Controls[I].Enabled := False;

end;

1,183

社区成员

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

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