windows – 如何获取窗口原始大小和位置(wsNormal vs wsMaximize
发布时间:2020-12-14 02:03:57 所属栏目:Windows 来源:网络整理
导读:我希望存储窗口大小和位置的用户个性化,以便在重新打开应用程序时使用它.这实际上很简单,我有以下代码工作: 在OnCreate: Width := wIni.ReadInteger('FORM','FORMW',980);Height := wIni.ReadInteger('FORM','FORMH',500);PnlXMLI.Width := wIni.ReadInteg
我希望存储窗口大小和位置的用户个性化,以便在重新打开应用程序时使用它.这实际上很简单,我有以下代码工作:
在OnCreate: Width := wIni.ReadInteger('FORM','FORMW',980); Height := wIni.ReadInteger('FORM','FORMH',500); PnlXMLI.Width := wIni.ReadInteger('FORM','PNLXMLIW',500); WindowState := TWindowState(GetEnumValue(TypeInfo(TWindowState),wIni.ReadString('FORM','WINDOWSTATE','wsNormal'))); 的OnDestroy: wIni.WriteInteger('FORM',Width); wIni.WriteInteger('FORM',Height); wIni.WriteInteger('FORM',PnlXMLI.Width); wIni.WriteString('FORM',GetEnumName(TypeInfo(TWindowState),Ord(WindowState))); 问题是当用户最大化窗口然后恢复它时,它会恢复到最大化之前的大小.但是如果他最大化,然后关闭并重新打开应用程序并恢复它,应用程序将不会在最大化之前恢复到原始大小.它将是屏幕大小,因为宽度和高度属性在读取时提供最大化的大小. 问题是:如何获得窗口的原始大小,即用户恢复窗口时将返回的大小?我尝试在读取宽度和高度之前将WindowState设置为wsNormal,但它不起作用(可能是因为表单被销毁?)…而且我宁愿使用不做不必要的GUI操作的解决方案(源代码美学原因). 提前致谢. 解决方法
您需要的功能是
GetWindowPlacement 和
SetWindowPlacement .这些功能在
WINDOWPLACEMENT 结构上运行.该结构具有rcNormalPosition成员,其记录如下:
当您保存窗口位置和大小时,需要保存rcNormalPosition中的值.在相反的方向,当恢复窗口位置和大小时,您必须调用SetWindowPlacement作为rcNormalPosition传递存储在INI文件中的用户首选项中的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008-r2 – 是否可以在gpo中设置require用户
- Windows Phone – 更改方向更改的布局
- 在WPF中使用.NET 2.0(Windows窗体)控件的限制?
- windows组策略实验-本地组策略和域控组策略
- windows-server-2008 – 病毒是否可以通过RDP连接使用的网络
- 在Windows命令提示符/ PowerShell中下载大文件
- windows – UDF的分区ID /文件系统类型是什么?
- 远程映像Windows Server
- windows-server-2008 – 具有3台服务器的高可用性:虚拟化与
- 用自定义驱动程序替换Windows USB类驱动程序?