Win32显示设备纵横比

时间:2013-10-29 05:13:47

标签: winapi aspect-ratio

有没有办法轮询显示设备的实际物理纵横比(甚至尺寸)(不是显示模式分辨率 - 屏幕本身)? ...尽管为显示器安装了正确的驱动程序,该方法仍能正常工作吗?我正在寻找适用于所有Win32平台的Win32 API调用。

1 个答案:

答案 0 :(得分:0)

这是我能想到的最接近的,使用GetDeviceCaps()来确定与桌面DC对应的设备的宽高比。我代码中的一个片段......

        HWND hDesktopWnd = GetDesktopWindow();
    HDC hDC = GetDC(hDesktopWnd);

    if(hDC != NULL)
    {
        float dw = (float)GetDeviceCaps(hDC, HORZSIZE);
        float dh = (float)GetDeviceCaps(hDC, VERTSIZE);
        ReleaseDC(hDesktopWnd, hDC);

  // Equivalent of reducing a fraction
        if(dw > dh)
        {
            dw /= dh;
            dh = 1.0f;
        }
        else
        {
            dh /= dw;
            dw = 1.0f;
        }

        wcp.fAspectNumerator = dw;
        wcp.fAspectDenominator = dh;
    }