如何记住监控应用程序所在的位置?
How to remember the monitor application is located at?
我正在编写一个C++ mfc 应用程序,我想记住它的位置。它应该打开它 windows 在关闭它们之前的确切位置。在打开 window 时,我会从文件或寄存器中读取数据并恢复 windows 关闭时的桌面、左顶点的坐标和 window 大小。
坐标和大小没有问题,但是跟踪我有 window 的显示器的最佳方法是什么?
显示器数量不可用,因为在WinAPI中无法通过数字获取显示器和显示器数量。
HMONITOR 值可能适合,根据 msdn:"A physical display has the same HMONITOR as long as it is part of the desktop." (https://msdn.microsoft.com/en-us/library/dd144968(v=vs.85).aspx)。但是,如果我重新启动 PC,我保存的 HMONITOR 值是否会保持一致?
您可以调用 GetWindowPlacement() when your application is closing to get the size and location of your window (including if it is maximized, restored, etc.). Save this information somewhere (the registry, application data, etc.), and when your program starts up next time read this information in and call SetWindowPlacement() 将 window 恢复到其之前的位置。
此外,您可能需要验证 window 的新位置是否可见,如果不可见,请移动它以使其再次可见。如果设置了不同数量的显示器(例如,如果您没有在笔记本电脑上使用外接显示器),就会发生这种情况。
我正在编写一个C++ mfc 应用程序,我想记住它的位置。它应该打开它 windows 在关闭它们之前的确切位置。在打开 window 时,我会从文件或寄存器中读取数据并恢复 windows 关闭时的桌面、左顶点的坐标和 window 大小。
坐标和大小没有问题,但是跟踪我有 window 的显示器的最佳方法是什么?
显示器数量不可用,因为在WinAPI中无法通过数字获取显示器和显示器数量。
HMONITOR 值可能适合,根据 msdn:"A physical display has the same HMONITOR as long as it is part of the desktop." (https://msdn.microsoft.com/en-us/library/dd144968(v=vs.85).aspx)。但是,如果我重新启动 PC,我保存的 HMONITOR 值是否会保持一致?
您可以调用 GetWindowPlacement() when your application is closing to get the size and location of your window (including if it is maximized, restored, etc.). Save this information somewhere (the registry, application data, etc.), and when your program starts up next time read this information in and call SetWindowPlacement() 将 window 恢复到其之前的位置。
此外,您可能需要验证 window 的新位置是否可见,如果不可见,请移动它以使其再次可见。如果设置了不同数量的显示器(例如,如果您没有在笔记本电脑上使用外接显示器),就会发生这种情况。