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新聞熱點
疑難解答