为何不能在窗体最小化时隐藏该窗体?(85分)

  • 主题发起人 主题发起人 zhshygshy
  • 开始时间 开始时间
Z

zhshygshy

Unregistered / Unconfirmed
GUEST, unregistred user!
以下语句为何不能在窗体最小化时隐藏该窗体?应该如何作?
procedure TfrmClip.FormResize(Sender: TObject);
begin
if frmClip.windowState = wsMinimized then
begin
frmClip.Hide
frmClip.update;
end;
end;
 
private
Procedure WMSysCommand(Var message : TMessage)
Message WM_SYSCOMMAND

Procedure TFrmclip.WMSysCommand(Var Message : TMessage)
begin
if (Message.WParam = SC_MINIMIZE) then
hide
else
Inherited;
end


 
谢谢烂泥,只是这样就没有了逐渐最小化的效果了……(不好意思)。

更重要的是,为什么点击最小化按钮不会使if frm.windowstate = wsMinimized then ...
的省略号部分事件发生?
也即使说,点击了最小化按钮以后,窗体的windowstate仍然是wsNormal(我已经实验过了)
 
最简单的解释resize可能是指窗体尺寸的大小变化
>>只是这样就没有了逐渐最小化的效果了
应该不会啊,你用什么控件的?



 
procedure TForm2.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_MINIMIZE then begin
Form2.WindowState := wsMinimized;
Hide;
end else inherited;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
WindowState := wsNormal;
end;
 
行了!综合烂泥和JohnsonGuo两位大侠的答案就可以了。因为我比较菜,写简单了看不懂。
:)
我的代码是这样的:

Procedure WMSysCommand(Var Msg : TMessage)
Message WM_SYSCOMMAND

Procedure TFrmclip.WMSysCommand(Var Msg : TMessage)
begin
if (Msg.WParam = SC_MINIMIZE) then
begin
frmClip.windowstate := wsMinimized;
hide
end
else
inherited;
end

只是尚有一事不明:
Procedure WMSysCommand(Var Msg : TMessage)
Message WM_SYSCOMMAND
最后的Message WM_SYSCOMMAND 是什么意思?
(哦呦,别打我,马上给分,马上给分……)
 
Message 是Delphi中的一个关键字,表示该过程为传送Windows或自定义的消息的.
WM_SYSCOMMAND 表示为系统消息,见WIN32 Help


大家一起提高 .
 
这样写是截获系统消息 WM_SYSCOMMAND 的意思,如果系统发送这样的消息,将会触发你的
处理代码。
 
多人接受答案了。
 
后退
顶部