获取windows操作系统分辨率(DPI)

// ScreenDPI.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;

// 1毫米=0.039370078740157英寸 
#define INCH 0.03937

float GetDPI()
{
    HDC hdcScreen;
    hdcScreen = CreateDC(L"DISPLAY", NULL, NULL, NULL);

    int iX = GetDeviceCaps(hdcScreen, HORZRES);    // pixel
    int iY = GetDeviceCaps(hdcScreen, VERTRES);    // pixel
    int iPhsX = GetDeviceCaps(hdcScreen, HORZSIZE);    // mm
    int iPhsY = GetDeviceCaps(hdcScreen, VERTSIZE);    // mm

    if (NULL != hdcScreen)
    {
        DeleteDC(hdcScreen);
    }
    float iTemp = iPhsX * iPhsX + iPhsY * iPhsY;
    float fInch = sqrt(iTemp) * INCH ;
    iTemp = iX * iX + iY * iY;
    float fPixel = sqrt(iTemp);

    float iDPI = fPixel / fInch;    // dpi pixel/inch
    cout<<"DPI:"<<iDPI<<endl;
    return iDPI;
}

int _tmain(int argc, _TCHAR* argv[])
{
    GetDPI();
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/freemindblog/p/5704607.html