VC文本编辑(CEdit)框垂直居中

2011-04-03 00:13:34|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, MFC, 界面设计|来源:唯设编程网

在多行模式下的CEdit类提供void CEdit::SetRectNP( LPCRECT lpRect)函数,此函数用来调整文本编辑的区域,用这个函数可以设置上下左右Margins,而void SetMargins( UINT nLeft, UINT nRight)函数只能设置左右Margins。
CRect rc = CRect(0,0,0,0);
edit.GetClientRect(&rc);
rc.DeflateRect(10,10,10,10);
edit.SetRectNP(&rc);
这段代码设置上下左右Margin都是10。
水平有限,到目前还没找到单行模式下让文本框的文本垂直居中的办法,因此想到了利用多行文本框来模拟单行然后设置垂直居中的办法。

CRect rc = CRect(0,0,0,0);
edit.GetClientRect(&rc);
CDC* pDC = edit1.GetDC();
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
int nFontHeight = tm.tmHeight + tm.tmExternalLeading;
int nMargin = (rc.Height() - nFontHeight) / 2;

rc.DeflateRect(0,nMargin);
edit.SetRectNP(&rc);

将文本框的属性设置为ES_MULTILINE | ES_AUTOHSCROLL且不能ES_AUTOVSCROLL | ES_WANTRETURN

 

发表评论0条 】
网友评论(共?条评论)..
VC文本编辑(CEdit)框垂直居中