2015-03-05 4 views
0

У меня возникают проблемы с расстоянием и размером элементов управления диалогового окна при использовании моего приложения в среде с высоким разрешением. Я помещаю элементы управления, используя следующий код в цикле:MFC Dialog Controls в Ultra High Resolutions

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); 

Однако ультра высокое разрешение изображения выглядит как: Ultra Res

И высокое разрешение изображения, как: Normal Res

+0

Попробуйте работать в DLU (диалоговые логические блоки), а затем преобразовать их в пиксели во время выполнения, используя «MapDialogRect» или «GetDialogBaseUnits» – user1793036

ответ

2

Вам нужно чтобы принять во внимание размер шрифта.

CFont* pFont = GetFont(); 

LOGFONT lf; 
pFont->GetLogFont(&lf); 

int iFontHeight = lf.lfHeight; // use this + padding to space your controls vertically 

Если вы хотите больше узнать о шрифте, вы можете использовать GetTextMetrics().