【发布时间】:2021-01-29 10:50:28
【问题描述】:
在 .NET Framework 4.6 和 Windows 窗体中,我有一个无边框窗体,没有标题栏,也没有最小化和最大化按钮,可调整大小(使用自定义代码)。
我想使用GetWindowPlacement 和SetWindowPlacement 保存和恢复表单位置和大小。
我从GetWindowPlacement 得到这种值:
<WindowPlacement>
<Length>44</Length>
<Flags>0</Flags>
<ShowCmd>1</ShowCmd>
<MinPosition>
<X>-1</X>
<Y>-1</Y>
</MinPosition>
<MaxPosition>
<X>-1</X>
<Y>-1</Y>
</MaxPosition>
<NormalPosition>
<Left>949</Left>
<Top>839</Top>
<Right>1882</Right>
<Bottom>1054</Bottom>
</NormalPosition>
</WindowPlacement>
我的表单/窗口没有最小化和最大化按钮,出于所有预期目的,它并非设计为最小化/最大化,因此应始终将其恢复到正常的窗口状态。
因此,我只想将NormalPosition 矩形从WindowPlacement 保存到应用程序设置中。
加载表单时,我打算创建一个 WindowPlacement 结构,其中包含从设置加载的 NormalPosition 字段,并用默认值填充其他值(ShowCmd 到 1,MinPosition 到 -1,-1,等等)
让我担心的是the docs的这句话:
应使用 WINDOWPLACEMENT 结构中使用的坐标 只能通过 GetWindowPlacement 和 SetWindowPlacement 函数。
我应该担心吗?我只保存NormalPosition 的计划会导致某种奇怪的行为吗?
【问题讨论】:
-
这不是完整的报价。完整的报价包含基本原理,并解释了您不必担心的原因。
标签: .net winforms winapi window-management window-position