如何从hWnd获取显示器屏幕分辨率?

Ger*_*iss 16 winapi screen-resolution

如何从hWnd获得显示器屏幕分辨率?

我正在使用hWnd,因为窗口可以位于多个监视器中的任何一个上.

即hWnd顶部/左侧坐标位于屏幕分辨率为800 x 600的显示器上.

我用一种名为PL/B的语言编程,它允许调用Windows API.

可以使用哪些Window API?

sid*_*guy 22

这是一个适合我的C++代码示例:

HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
MONITORINFO info;
info.cbSize = sizeof(MONITORINFO);
GetMonitorInfo(monitor, &info);
int monitor_width = info.rcMonitor.right - info.rcMonitor.left;
int monitor_height = info.rcMonitor.bottom - info.rcMonitor.top;
Run Code Online (Sandbox Code Playgroud)


Eri*_*bes 21

user32功能MonitorFromWindow允许您在一个hWnd传递,并返回一个句柄到它的监视器(或默认-详见链接的MSDN文章).有了它,您可以调用GetMonitorInfo来检索包含RECT详细说明其分辨率的MONITORINFO结构.

有关详细信息,请参阅MSDN 的" 多屏幕参考"部分.

我添加了示例代码,但我不知道您引用的语言,我不知道C#示例代码对您有多大帮助.如果您认为它会有所帮助,请告诉我,我会快速编写一些代码.


mar*_*com 5

也有GetSystemMetrics,请在msdn上签出

  • 的确如此,但是在最终用户具有多个监视器的情况下,使用MonitorFromWindow会更好。 (3认同)