我有一个(355,99)尺寸的对话框,它只有菜单和任务栏,所以尺寸很小。它的显示在100%dpi时可以正常显示,但在125%dpi时可以切出一些任务控制。如何在以下功能中根据dpi缩放比例
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
lpMMI->ptMinTrackSize = CPoint(355,99); // set minimum size
}
最佳答案
我自己找到了解决方案,所以我将其发布以帮助他人。对于我的问题,我已经找到系统的dpi并相应地设置对话框的大小。
这是我的代码:
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
HDC hdcScreen = ::GetDC(NULL);
int iDPI = -1; // assume failure
if (hdcScreen)
{
iDPI = ::GetDeviceCaps(hdcScreen, LOGPIXELSX);
::ReleaseDC(NULL, hdcScreen);
}
switch(iDPI)
{
case 96:
lpMMI->ptMinTrackSize = CPoint(355,99);
break;
case 120:
lpMMI->ptMinTrackSize = CPoint(360,115);
break;
case 144:
lpMMI->ptMinTrackSize = CPoint(365,134);
break;
case 196:
lpMMI->ptMinTrackSize = CPoint(370,150);
break;
default:
lpMMI->ptMinTrackSize = CPoint(355,99);
break;
}
}