c++ - 如何记住监控应用程序所在的位置?

标签 c++ windows winapi mfc monitors

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

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

Number of display 是不行的,因为在WinAPI 中没有办法通过number 和monitor 的编号获取监视器。

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

最佳答案

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

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

关于c++ - 如何记住监控应用程序所在的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240256/

相关文章:

c# - UI自动化切换窗口

c# - 观看另一个应用程序,如果它关闭关闭我的应用程序(不轮询)c#

C++ Boost.serialization 与简单加载/保存

c - 如何将反汇编的C代码划分为函数?

c - 处理 IRP_MJ_SHUTDOWN

c - 从 C 或 Delphi 从 Win32 获取 BIOS UUID

c++ - 在 64 位 Windows 上将字符串从 C++ 返回到 C# 时如何防止 AccessViolationException?

c++ - 矩形交点(垂直线)

c++ - 从 C 调用系统 C++ 函数

java - 使用 Android 应用程序在 Java/Tomcat 服务器中进行 Windows 身份验证