int CMonitor::GetDPI() const
{
HDC hdc = CreateDC();
int dpiX = ::GetDeviceCaps(hdc, LOGPIXELSX);
int dpiY = ::GetDeviceCaps(hdc, LOGPIXELSY);
ReleaseDC(hdc));
return dpiY > dpiX ? dpiY : dpiX;
}
在我的应用程序中,DPIAware标签为假,这就是为什么我的字体大小是150%还是200%总是给我96的原因
我希望DPI的实际值为150%。它应该给我144,而不是96。
有一个GetDpiForWindow
API,请告诉我,但它与Windows 7不兼容。
我想要任何与Windows 7兼容的API并给我实际的DPI。
答案 0 :(得分:0)
我找到了解决方法:
int desktopWidth = GetDeviceCaps(screen, DESKTOPHORZRES);
int displayWidth = GetDeviceCaps(screen, HORZRES);
这里第一个给出了DPI True效果的实际宽度,第二个给出了DPI的假宽度,因此通过将它们相除,我得到了实际的DPI和字体大小。
在MSDN上未提供DESKTOPHORZRES