我需要一些帮助来尝试在最大化时捕获 MDI 子窗体的最小化事件。
当单击下图中红色圈出的按钮时表单未最大化时,我能够捕获最小化/恢复/最大化事件。
我使用 WMSysCommand 捕获上述事件:
procedure TMDIChildForm.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_MINIMIZE then
begin
//my code here
end;
end;
当我尝试在 MDI 子窗体最大化时使用 WMSysCommand 捕获相同的事件并单击下图中红色圈出的按钮时,它不会调用此代码。
无论我尝试过什么,我都未能成功捕捉到这些事件。如果有人能指出我正确的方向,我将不胜感激。谢谢你。
当我尝试时,对我来说效果很好:
type
TMDIChildForm = class(TForm)
private
{ Private declarations }
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;
procedure TMDIChildForm.WMSysCommand(var Msg: TWMSysCommand);
begin
inherited; // <-- ADD THIS!!
if Msg.CmdType = SC_MINIMIZE then
begin
// code here
end;
end;
WMSysCommand()
并捕捉SC_MINIMIZE
每当MDI子被最小化,不管以前是否最大化或不会如预期的通知。
确保TMDIChildForm.WMSysCommand()
调用inherited
(如上所示)将WM_SYSCOMMAND
消息传递给默认处理程序,以便 Windows 有机会处理它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句