Пример #1
0
void LabelControl::CalcRect()
{
	Rect rcNew = m_rc;
	int cx, cy;

	if (m_szLabel == NULL) {
		cx = cy = 0;
	} else {
		Font *pfnt = gapfnt[m_nfnt];
		if (m_wf & kfLblMultiLine) {
			cx = m_rc.Width();
            if (m_wf & kfLblClipVertical) {
                cy = m_rc.Height();
            } else {
                cy = pfnt->CalcMultilineHeight(m_szLabel, m_rc.Width());
            }
		} else {
			cx = GetFancyTextExtent(pfnt, m_szLabel);
			cy = pfnt->GetHeight();
		}
	}

	if (m_wf & kfLblCenterText) {
		rcNew.left = (m_rc.left + m_rc.Width() / 2) - cx / 2;
	} else if (m_wf & kfLblRightText) {
		rcNew.left = m_rc.right - cx;
	} else {
		rcNew.left = m_rc.left;
	}
	rcNew.right = rcNew.left + cx;
	rcNew.bottom = rcNew.top + cy;
	SetRect(&rcNew, false);
}