如何实现窗口最小化时运行自编代码。 ( 积分: 20 )

  • 主题发起人 主题发起人 sutao01
  • 开始时间 开始时间
S

sutao01

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在点击最小化按钮后,窗口不最小化,而运行自编的一段代码,如何实现?
 
private
procedure WMONMIN(var msg: Tmessage); message WM_SYSCOMMAND;

实现是:
procedure TForm1.WMONMIN(var msg: Tmessage);
begin
if MSG.WParam = SC_MINIMIZE then
begin
showmessage('Do not !');
exit;
end;
inherited;
end;
end.
 
方法一:截获WM_SYSCOMMAND消息,看窗体是否处于最小化
type
TForm1 = class(TForm)
private
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
//...
end;

implementation

{$R *.DFM}
procedure TForm1.WMSysCommand(var Message:TMessage);
begin
if Msg.WParam = SC_MINIMIZE then
begin
// 你要执行的代码
Form1.WindowState := wsMinimized;
end
else
inherited;
end;

方法二:判断是否点击了窗体上的最小化按钮
type
TForm1 = class(TForm)
private
procedure Minimize(var BtnDown: TWMNCLBUTTONDOWN); message WM_NCLBUTTONDOWN;
//...
end;

implementation

{$R *.DFM}
procedure TForm1.Minimize(var BtnDown: TWMNCLBUTTONDOWN);
begin
if BtnDown.HitTest = HTMINBUTTON then
begin
// 你要执行的代码
Form1.WindowState := wsMinimized;
end
else
inherited;
end;
 
好象没有解决在状态栏上选择右键菜单最小化的事件。
 
多人接受答案了。
 
真不好意思,分数分配错了,应是刘卫民:13分,mr.hl:5分,sunboy_del:2分。
 

Similar threads

S
回复
0
查看
691
SUNSTONE的Delphi笔记
S
S
回复
0
查看
778
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
后退
顶部