作者:在路上的老兵 | 来源:互联网 | 2023-09-16 14:22
使用MFC的编辑框时,常常需要设置编辑框文本的字体,同时使文本垂直居中。方法如下:一,文本垂直居中。CRectrect;GetDlgItem(IDC_CC_COLCORNE
使用MFC的编辑框时,常常需要设置编辑框文本的字体,同时使文本垂直居中。方法如下:
一,文本垂直居中。
CRect rect;
GetDlgItem(IDC_CC_COLCORNERNUM)->GetClientRect(&rect);
::OffsetRect(&rect,0,15);
::SendMessageA( ((CComboBox*)GetDlgItem(IDC_CC_COLCORNERNUM))->m_hWnd,EM_SETRECT,0,(LPARAM)&rect );
其中::OffsetRect函数将指定的矩形移动到指定的位置:
BOOL OffsetRect(
LPRECT lprc, // 矩形
int dx, // 横向偏移
int dy // 纵向偏移
);
参数:
Lprc:[输入输出]指向一个RECT结构,其中包含了被移动矩形的逻辑坐标
Dx:[输入]指定的矩形左右移动的量。当向左移动的时候,这个参数必须是一个负值。
Dy:[输出]指定的矩形上下移动的量。当想上移动的时候,这个参数应该是一个负值。
返回值:
如果函数成功,返回非0,否则返回0。
从上面可以看出,这种方法只是使得编辑框上面留有一定距离的空白,并不是严格的垂直居中。使用时根据实际情况调节dx、dy尽量使得文本看起来居中。
二,文本字体设置
字体设置比较简单,在**Dlg中定义CFont成员: m_showFont;
CFont m_showFont;
在OnInitDialog()中定义字体并给控件设置该字体:
m_showFont.CreatePointFont( 100,L"黑体" );
GetDlgItem(IDC_CC_COLCORNERNUM)->SetFont( &m_showFont );
三,使用冲突
在使用中按照上面两个步骤,就是无法使得编辑框文本垂直居中。后来偶然的一次尝试,将第二步“文本字体设置”放在第一步“文本垂直居中”之前,结果发现编辑框文本垂直居中了。。原因尚不知道。