gpt4 book ai didi

Delphi 2009 - 通过双击 SysMenu 恢复窗口时进行处理吗?

转载 作者:行者123 更新时间:2023-12-03 15:45:56 25 4
gpt4 key购买 nike

我需要在用户通过双击标题栏恢复表单时进行处理。我尝试处理 WM_SYSCOMMAND 窗口消息,但这仅在用户通过单击系统菜单中的恢复按钮恢复表单时才有效。

如果这很重要,我正在使用 DevExpress 功能区表单组件。

谢谢。

最佳答案

我认为您的意思是双击标题栏,因为双击系统菜单会关闭表单。
WM_SYSCOMMAND 应该可以工作,因为双击标题栏恢复表单时的消息顺序是:

Message posted: hwnd=$004E0820 WM_NCLBUTTONDBLCLK wParam $00000002 lParam $000705D4 Process Project1.exe (2380)
=> Message sent: hwnd=$004E0820 WM_SYSCOMMAND restore cmd requested (-44,-44) Process Project1.exe (2380)
Message sent: hwnd=$004E0820 WM_WINDOWPOSCHANGING wParam $00000000 lParam $0012F4CC Process Project1.exe (2380)
Message sent: hwnd=$004E0820 WM_GETMINMAXINFO wParam $00000000 lParam $0012EF6C Process Project1.exe (2380)
Message sent: hwnd=$004E0820 WM_NCCALCSIZE wParam $00000001 lParam $0012F4A0 Process Project1.exe (2380)
Message sent: hwnd=$004E0820 WM_NCPAINT update region 40040F4B Process Project1.exe (2380)
Message sent: hwnd=$004E0820 WM_ERASEBKGND wParam $31011DCA lParam $00000000 Process Project1.exe (2380)
Message sent: hwnd=$004E0820 WM_WINDOWPOSCHANGED wParam $00000000 lParam $0012F4CC Process Project1.exe (2380)

问题在于 Windows.pas 中CmdType const SC_RESTORE2 = 61730//0xF122缺失

请参阅下面的工作代码:

type
TForm7 = class(TForm)
private
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
end;

var
Form7: TForm7;

implementation

{$R *.dfm}

{ TForm7 }

const
SC_RESTORE2 = 61730; //0xF122

procedure TForm7.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_RESTORE2 : beep;
end;
inherited;
end;

更新:引用 WM_SYSCOMMAND Notification on MSDN 中的 SC_RESTORE2 (请参阅“C# 中的值”部分)

关于Delphi 2009 - 通过双击 SysMenu 恢复窗口时进行处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com