Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi窗体恢复状态位置和大小_Delphi_Winapi - Fatal编程技术网

Delphi窗体恢复状态位置和大小

Delphi窗体恢复状态位置和大小,delphi,winapi,Delphi,Winapi,在最大化的delphi表单中,如何获得表单的恢复状态位置和大小?我知道在.NET中我们使用了RestoreBounds和DesktopBound这不是VCL框架公开的。相反,您需要深入了解Win32 API。您需要的功能是 您需要的信息可以在WindowPlacementstruct中找到。请注意,坐标是相对于工作区域而不是屏幕报告的 通常,您需要此信息,以便以后可以恢复它。使用SetWindowPlacement执行此操作 您可以使用JediVCL库,其中有TJvFormPlacement和T

在最大化的delphi表单中,如何获得表单的恢复状态位置和大小?我知道在.NET中我们使用了
RestoreBounds
DesktopBound

这不是VCL框架公开的。相反,您需要深入了解Win32 API。您需要的功能是

您需要的信息可以在
WindowPlacement
struct中找到。请注意,坐标是相对于工作区域而不是屏幕报告的


通常,您需要此信息,以便以后可以恢复它。使用
SetWindowPlacement
执行此操作

您可以使用JediVCL库,其中有
TJvFormPlacement
TJvFormStorage
组件,这些组件可以自动将表单边界保存到注册表、ini或DBA simple
get
set
中,如果您始终有相同数量的监视器,则这些组件可以工作。如果您在稍后拔下的显示器上
获取
,然后
设置回保存的值,您的应用程序将显示在屏幕外。JVCL进行测试以确保
WindowPlacement.rcNormalPosition
在执行
设置WindowPlacement
之前已显示在屏幕上(请参阅JVVClutils.pas
InternalRestoreFormPlacement
)。
var
  WindowPlacement: TWindowPlacement;
....
WindowPlacement.length := SizeOf(WindowPlacement);
Win32Check(GetWindowPlacement(Form.Handle, WindowPlacement));