如何在MSDN Windows中获取HMONITOR信息

How to get HMONITOR information in MSDN Windows?

本文关键字:获取 HMONITOR 信息 Windows MSDN      更新时间:2023-10-16

我需要做的是将句柄传递给主监视器到Windows中的DXGI_OUTPUT_DESC结构,以便DesktopCoordinates的RECT只有主监视器尺寸,即使连接了多个监视器。

下面是DXGI_OUTPUT_DESC的结构:
typedef struct DXGI_OUTPUT_DESC {
  WCHAR              DeviceName[32];
  RECT               DesktopCoordinates;
  BOOL               AttachedToDesktop;
  DXGI_MODE_ROTATION Rotation;
  HMONITOR           Monitor;
} DXGI_OUTPUT_DESC;

然而,我提到MSDN目录中几乎所有的GetMonitorInfo函数都有HMONITOR参数,但都是中,它们都没有返回一个句柄到监视器。

所以基本上我的问题是我使用什么函数或命令,以便返回主监视器的句柄,然后我可以在DXGI_OUTPUT_DESC中修改,以便修改DesktopCoordinates的RECT以匹配主监视器的尺寸。

这个问题显然是针对有多个监视器连接到系统的情况,但我只需要主监视器的尺寸。

Raymond Chen在他的博客上给出了答案。

下面是最重要的部分:

根据定义,主监视器的左上角位于(0,0),因此可以使用此函数:

HMONITOR GetPrimaryMonitorHandle()
{
    const POINT ptZero = { 0, 0 };
    return MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY);
}