我正在编写一个C ++ mfc应用程序,我想记住它的位置。它应该在关闭它们之前准确打开它们的窗口。在打开窗口时,我将从文件或寄存器中读取数据并恢复窗口关闭它的桌面,左上角点的坐标和窗口大小。
坐标和尺寸没有问题,但跟踪我有窗口的显示器的最佳方法是什么?
显示的数量不起作用,因为无法通过WinAPI中的数字和监视器的数量来获取监视器。
HMONITOR值可能适合,根据msdn:"物理显示器具有相同的HMONITOR,只要它是桌面的一部分。" (https://msdn.microsoft.com/en-us/library/dd144968(v=vs.85).aspx)。但是,如果我重新启动PC,我保存的HMONITOR值是否会保持一致?
答案 0 :(得分:3)
您可以在应用程序关闭时调用GetWindowPlacement()以获取窗口的大小和位置(包括最大化,恢复等)。在某处保存此信息(注册表,应用程序数据等),并在下次启动程序时读取此信息并调用SetWindowPlacement()将窗口恢复到以前的位置。
此外,您可能希望验证窗口的新位置是否可见,以及是否要移动它以使其再次可见。如果设置了不同数量的显示器(例如,如果您没有使用带有笔记本电脑的外接显示器),则会发生这种情况。