【发布时间】:2015-04-20 11:57:03
【问题描述】:
我想将GetWindowPlacement 在rcNormalPosition.Left 和rcNormalPosition.Top 中返回的工作区坐标转换为我可以稍后分配给MainForm.Left 和MainForm.Top 的屏幕坐标。我该怎么做?
【问题讨论】:
-
我不明白你的问题,因为它是一样的。我在这里做了一个小测试:pastebin.com/uQyCZrB1 它总是一样的
-
@JensBorrisholt 不一样。例如,考虑一下任务栏是上对齐还是左对齐。
-
在保存和恢复表单位置时,我强烈建议您在应用程序关闭时为自己保存一些有关工作空间设置的额外信息。为什么?自上次运行应用程序以来,工作区设置可能已更改(上次应用程序可能已显示在不再连接的第二个监视器上)。如果无法检测到这一点,您可能会将应用程序放置在当前可见区域之外。我已经看到许多应用程序未能做到这一点,将此类应用程序重新放回可见区域可能会非常痛苦。
-
@Silver 保存工作空间不是前进的方向。在给定当前工作区的情况下,只需强制窗口可见。这将保护您免受所有隐藏表单故障模式的影响。
-
@DavidHeffernan 如果您只是强制窗口可见,那么您将剥夺用户预先安排最适合该用户需要的应用程序窗口的机会。这正是 OP 似乎试图为他的应用程序用户提供的东西。现在我已经看到应用程序不仅存储工作空间信息只是为了确保在下次启动时应用程序窗口将被放置在可见区域中,而且还为用户提供能够为不同的工作空间设置设计单独的应用程序布局。这对笔记本电脑用户来说非常有用。
标签: delphi coordinates delphi-2009