这个问题似乎很容易,但由于某种原因,我很难找到答案.
我有一个应用程序将表单的大小和位置保存在INI文件中.这一切都很好,但是当你最大化时关闭应用程序时,它将保存表单的大小和位置最大化而不是其状态.
我的意思是,在下一次运行时,表单将显示最大化,而实际上它已"恢复"但覆盖整个桌面.
有没有办法保存最大化事件之前的表单大小,然后保存表单最大化的事实.从INI文件中读取的内容是否在最大化状态下创建表单并将其"恢复"大小设置为最大化事件之前的大小?
谢谢!
mgh*_*hie 12
使用Windows API函数GetWindowPlacement(),如下所示:
procedure TForm1.WriteSettings(AUserSettings: TIniFile);
var
Wp: TWindowPlacement;
begin
Assert(AUserSettings <> nil);
if HandleAllocated then begin
// The address of Wp should be used when function is called
Wp.length := SizeOf(TWindowPlacement);
GetWindowPlacement(Handle, @Wp);
AUserSettings.WriteInteger(SektionMainForm, KeyFormLeft,
Wp.rcNormalPosition.Left);
AUserSettings.WriteInteger(SektionMainForm, KeyFormTop,
Wp.rcNormalPosition.Top);
AUserSettings.WriteInteger(SektionMainForm, KeyFormWidth,
Wp.rcNormalPosition.Right - Wp.rcNormalPosition.Left);
AUserSettings.WriteInteger(SektionMainForm, KeyFormHeight,
Wp.rcNormalPosition.Bottom - Wp.rcNormalPosition.Top);
AUserSettings.WriteBool(SektionMainForm, KeyFormMaximized,
WindowState = wsMaximized);
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4287 次 |
| 最近记录: |