1

我正在编写一个 C++ mfc 应用程序,我想记住它的位置。在关闭它们之前,它应该在它们所在的位置打开它的窗户。在打开一个窗口时,我会从文件或寄存器中读取数据并恢复它关闭的窗口桌面、左上点的坐标和窗口大小。

坐标和大小没有问题,但是跟踪我有一个窗口的显示器的最佳方法是什么?

显示器数量不起作用,因为在WinAPI中无法通过显示器数量和显示器数量来获取显示器。

根据 msdn 的说法,HMONITOR 值可能适合:“只要是桌面的一部分,物理显示器就具有相同的 HMONITOR。” (https://msdn.microsoft.com/en-us/library/dd144968(v=vs.85).aspx)。但是如果我重新启动电脑,我保存的 HMONITOR 值会保持一致吗?

4

1 回答 1

4

您可以在应用程序关闭时调用GetWindowPlacement()以获取窗口的大小和位置(包括是否最大化、恢复等)。将此信息保存在某处(注册表、应用程序数据等),当您的程序下次启动时读取此信息并调用SetWindowPlacement()将窗口恢复到其先前位置。

此外,您可能想要验证窗口的新位置是否可见,如果不移动它,使其再次可见。如果设置了不同数量的显示器(例如,如果您没有在笔记本电脑上使用外接显示器),则可能会发生这种情况。

于 2016-10-25T12:49:22.407 回答