MFC获取Windows DPI
flyfish
获取操作系统版本
OSVERSIONINFO osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi);根据osvi的两个变量dwMajorVersion,dwMinorVersion来区分版本
Win8.1系统以下,不包括Win8.1获取方法
// pixels in screen dcHDC hdc = GetDC(NULL);if (hdc){g_dpiX = GetDeviceCaps(hdc, LOGPIXELSX);//每英寸逻辑像素数 水平g_dpiY = GetDeviceCaps(hdc, LOGPIXELSY);//每英寸逻辑像素数 垂直 ReleaseDC(NULL, hdc);}Win8.1以上系统,包括Win8.1获取方法
HMONITOR hMonitor; POINT pt; HRESULT hr = E_FAIL; pt.x = 1; pt.y = 1; hMonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST); hr = GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &g_dpiX, &g_dpiY);设置缩放比例
UINT m_nScaleFactor;void SetScale(__in UINT iDPI){ m_nScaleFactor = MulDiv(iDPI, 100, 96); //MulDiv(a,b,c) a*b/c}关于API GetDpiForMonitor function说明区分操作系统的原因
Minimum supported clientWindows 8.1 [desktop apps only]Minimum supported serverWindows Server 2012 R2 [desktop apps only]HeaderShellScalingAPI.h新闻热点
疑难解答