现在的位置: 首页 > 综合 > 正文

CStatic Text实现多行垂直居中

2018年05月04日 ⁄ 综合 ⁄ 共 650字 ⁄ 字号 评论关闭

使用CStatic Text时垂直居中得和单行格式一起用,如果要多行文字在控件中垂直居中,需要继承CStatic,并在其中捕捉ON_WM_PAINT消息:

void CMultilineStatic::OnPaint() 
{ 
	CPaintDC dc(this); // device context for painting 
	dc.SelectObject(GetFont()); 
	dc.SetBkMode(TRANSPARENT); 
	dc.SetTextColor(RGB(255,255,255)); 
	
	CRect rect; 
	GetClientRect(rect);
	CBrush brush(BLACK_BRUSH);
	dc.FillRect(&rect, &brush);

	CRect rectText(rect);
	int height = dc.DrawText(m_text,rectText,
		DT_CENTER | DT_WORDBREAK | DT_CALCRECT | DT_EDITCONTROL); // 获得文本高度
	rect.OffsetRect(0,(rect.Height()-height)/2);
	dc.DrawText(m_text,rect, DT_CENTER | DT_WORDBREAK);
}

在主对话框中添加CMultilineStatic的变量m_MultilineStaticCtl,并在OnInitDialog()中增加m_MultilineStaticCtl.SubclassDlgItem(IDC_DATE,this);即可

抱歉!评论已关闭.