MFC
[MFC] DPI Scale
Jcoder
2022. 9. 21. 15:24
Windows SDK 8.1 미만 코드. 그 이상으로 필요시 https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-getdpiforwindow 해당 함수 사용.
GetDpiForWindow function (winuser.h) - Win32 apps
Returns the dots per inch (dpi) value for the specified window.
learn.microsoft.com
void CTestDlg::InitializeDPIScale(HWND hwnd)
{
CDC* pDC = GetDC();
m_fDPIScaleX = GetDeviceCaps(pDC->GetSafeHdc(), LOGPIXELSX) / 96.0f;
m_fDPIScaleY = GetDeviceCaps(pDC->GetSafeHdc(), LOGPIXELSY) / 96.0f;
if (m_fDPIScaleX == 0.96f)
{
m_fDPIPercent = 1.0f;
}
else if (m_fDPIScaleX == 1.20f) // 125%
{
m_fDPIPercent = 1.25f;
}
else if (m_fDPIScaleX == 1.44f) // 150%
{
m_fDPIPercent = 1.50f;
}
else if (m_fDPIScaleX == 1.68f) // 175%
{
m_fDPIPercent = 1.75f;
}
else if (m_fDPIScaleX == 1.92f) // 200%
{
m_fDPIPercent = 2.00f;
}
else if (m_fDPIScaleX == 2.16f) // 225%
{
m_fDPIPercent = 2.25f;
}
else if (m_fDPIScaleX == 2.40f) // 250%
{
m_fDPIPercent = 2.50f;
}
else if (m_fDPIScaleX == 2.88f) // 300%
{
m_fDPIPercent = 3.00f;
}
else if (m_fDPIScaleX == 3.36f) // 350%
{
m_fDPIPercent = 3.50f;
}
}