gpt4 book ai didi

c++ - 使用ATL时如何获取桌面Rect?

转载 作者:行者123 更新时间:2023-11-28 05:07:21 26 4
gpt4 key购买 nike

我想从对话框中获取整个桌面的 Rect,ATL 已将 GetWindowRect(HWND hWnd, LPRECT lpRect) 覆盖为 GetWindowRect(LPRECT lpRect) 并且它假定当前对话窗口,因此它只用自己的尺寸填充 lpRect

如何获取桌面窗口的矩形?我试过使用 GetDesktopWindow(),但它返回一个 HWND,我仍然无法从中找到 Rect。

最佳答案

对于初学者,你可以做 ::GetWindowRect(hWnd, lpRect);如果你想绕过 ATL 的 CWindow::GetWindowRect(LPRECT)成员(member)。

桌面不一定是矩形的,因为您的系统可能是多显示器的。


(来源:s-msft.com)

如果忽略多显示器方面,可以使用 GetSystemMetrics(SM_CXSCREEN) + GetSystemMetrics(SM_CYSCREEN) (或 GetSystemMetrics(SM_CXVIRTUALSCREEN) + GetSystemMetrics(SM_CYVIRTUALSCREEN) ),或 SystemParametersInfo(SPI_GETWORKAREA, ...) 蜜蜂。 ATL 不提供任何快捷方式,这些必须是直接的 API 调用。

使用多显示器系统,您 enumerate monitors并为每个枚举的人获得一个工作区。它们一起就是桌面:

To enumerate all the devices on the computer, call the EnumDisplayDevices function. The information that is returned also indicates which monitor is part of the desktop.

关于c++ - 使用ATL时如何获取桌面Rect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44377301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com