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