Delphi窗体恢复状态位置和大小
在最大化的delphi表单中,如何获得表单的恢复状态位置和大小?我知道在.NET中我们使用了Delphi窗体恢复状态位置和大小,delphi,winapi,Delphi,Winapi,在最大化的delphi表单中,如何获得表单的恢复状态位置和大小?我知道在.NET中我们使用了RestoreBounds和DesktopBound这不是VCL框架公开的。相反,您需要深入了解Win32 API。您需要的功能是 您需要的信息可以在WindowPlacementstruct中找到。请注意,坐标是相对于工作区域而不是屏幕报告的 通常,您需要此信息,以便以后可以恢复它。使用SetWindowPlacement执行此操作 您可以使用JediVCL库,其中有TJvFormPlacement和T
RestoreBounds
和DesktopBound
这不是VCL框架公开的。相反,您需要深入了解Win32 API。您需要的功能是
您需要的信息可以在WindowPlacement
struct中找到。请注意,坐标是相对于工作区域而不是屏幕报告的
通常,您需要此信息,以便以后可以恢复它。使用
SetWindowPlacement
执行此操作 您可以使用JediVCL库,其中有TJvFormPlacement
和TJvFormStorage
组件,这些组件可以自动将表单边界保存到注册表、ini或DBA simpleget
和set
中,如果您始终有相同数量的监视器,则这些组件可以工作。如果您在稍后拔下的显示器上获取
,然后将
设置回保存的值,您的应用程序将显示在屏幕外。JVCL进行测试以确保WindowPlacement.rcNormalPosition
在执行设置WindowPlacement
之前已显示在屏幕上(请参阅JVVClutils.pasInternalRestoreFormPlacement
)。
var
WindowPlacement: TWindowPlacement;
....
WindowPlacement.length := SizeOf(WindowPlacement);
Win32Check(GetWindowPlacement(Form.Handle, WindowPlacement));