简单问题 -- 为什么消息只执行一次?(50分)

  • 主题发起人 主题发起人 jzx
  • 开始时间 开始时间
J

jzx

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么formhide只执行一次就不在执行了?
代码:

procedure wmmytrayiconcallback(var Msg : TMessage); //处理点击托盘图标的事件
message WM_MYTRAYICONCALLBACK;
procedure FormHide(Sender : TObject);//当用户单击最小化按钮的处理过程

......
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := FormHide;
end;

procedure TForm1.wmmytrayiconcallback(var Msg: TMessage);
//处理点击托盘图标的事件,根据 WM_MOUSEMOVE 消息的不同情况产生不同的回应
var
CursorPos : TPoint;
begin
Form1.WindowState :=wsNormal;
PopupMenu1.AutoPopup:=False;
case Msg.lParam of
//左键双击
WM_LBUTTONDBLCLK : begin
Application.ShowMainForm := True;
SetForegroundWindow(Application.Handle);
end;
//右键按下
WM_RBUTTONDOWN : begin
GetCursorPos(CursorPos);
PopupMenu1.Popup(CursorPos.x,CursorPos.y);
end;
end//case
end;

procedure TForm1.FormHide(Sender: TObject);
begin
Perform(WM_MYTRAYICONCALLBACK,0,WM_LBUTTONDBLCLK);
inherited;
end;
 
补充一下,我做的是一个TrayBar程序,通过双击图标可以实现显示和隐含程序,也可以
通过替换窗体的最小化事件来实现隐含的功能(发消息),就和双击图标一样,现在出现
问题了,只在第一次点击最小化时触发formhide,之后就再不触发了,希望各位大虾指点
迷津。
 
经过我的反复试验,我发现是执行了
Perform(WM_MYTRAYICONCALLBACK,0,WM_LBUTTONDBLCLK);
之后最小化按钮就不管用了,请问这是为什么?
 
是我的问题太简单吗?还是。。。。。。
各位大虾,帮帮忙好吗?
 
将你的代码实验,好象没有出现你所说的现象。是否还有其他的东东?
 
问题已经被我解决
在form的create中加入Application.OnMinimize := FormMinMized;
当窗体最小化的时候修改窗体的状态为最小话(不要问我为什么,我不知道)问题
就解决了。下面是代码
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := FormMinMized;
TrayShow(Form1); //显示托盘图标
end;


procedure TForm1.FormMinMized(Sender: TObject);
begin
self.WindowState := wsMinimized;
end;
 
jzx: 既然问题我自己解决了,那分我取回,大家没意见吧。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部