超高分辨率的MFC对话框控件
在超高分辨率环境中使用应用程序时,我在对话框控件的间距和大小方面遇到了问题。我使用以下代码在for循环中放置控件:超高分辨率的MFC对话框控件,mfc,dialog,controls,spacing,high-resolution,Mfc,Dialog,Controls,Spacing,High Resolution,在超高分辨率环境中使用应用程序时,我在对话框控件的间距和大小方面遇到了问题。我使用以下代码在for循环中放置控件: GetClientRect(cRectDimen); int iHalf = cRectDimen.right / 2; int iY = cRectDimen.top; int iX = cRectDimen.left+5; int iVeryFarRight = cRectDimen.right - 5; int iFarRight = iHalf - 10; POINT p
GetClientRect(cRectDimen);
int iHalf = cRectDimen.right / 2;
int iY = cRectDimen.top;
int iX = cRectDimen.left+5;
int iVeryFarRight = cRectDimen.right - 5;
int iFarRight = iHalf - 10;
POINT ptTop,ptBottom;
cStat = new CStatic;
iY += 20;
ptTop.x = iX + 10;
ptTop.y = iY;
ptBottom.x = iX + pDataField->m_csDesc.GetLength() * 10;
ptBottom.y = iY + 15;
cStatRect.SetRect(ptTop,ptBottom);
然而,超高分辨率图像显示为:
高分辨率图像如下所示:
您需要考虑字体的大小
CFont* pFont = GetFont();
LOGFONT lf;
pFont->GetLogFont(&lf);
int iFontHeight = lf.lfHeight; // use this + padding to space your controls vertically
如果您想获得有关字体的更多详细信息,可以使用GetTextMetrics()。尝试在DLU(对话框逻辑单元)中工作,然后在运行时使用MapDialogRect
或GetDialogBaseUnits