我想将GetWindowPlacement
inrcNormalPosition.Left
和返回的工作区坐标转换为rcNormalPosition.Top
以后可以分配给MainForm.Left
和的屏幕坐标MainForm.Top
。我怎样才能做到这一点 ?
最简单和干净的方法是使用API函数,与合作伙伴GetWindowPlacement
,即SetWindowPlacement
。这样,您无需在工作空间和屏幕坐标之间进行转换,因为您可以让系统为您完成工作。
var
WindowPlacement: TWindowPlacement;
....
WindowPlacement.length := SizeOf(WindowPlacement);
Win32Check(GetWindowPlacement(Handle, WindowPlacement));
....
Win32Check(SetWindowPlacement(Handle, WindowPlacement));
在上面的代码中,Handle
假定是窗体的窗口句柄。
如果您一直坚持左上方,那么您可以像这样恢复它们:
var
WindowPlacement: TWindowPlacement;
....
WindowPlacement.length := SizeOf(WindowPlacement);
Win32Check(GetWindowPlacement(Handle, WindowPlacement));
WindowPlacement.rcNormalPosition.Left := NewLeft;
WindowPlacement.rcNormalPosition.Top := NewTop;
Win32Check(SetWindowPlacement(Handle, WindowPlacement));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句