MFC编辑框(Edit Control)文本垂直居中方法

    使用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 );

三,使用冲突

   在使用中按照上面两个步骤,就是无法使得编辑框文本垂直居中。后来偶然的一次尝试,将第二步“文本字体设置”放在第一步“文本垂直居中”之前,结果发现编辑框文本垂直居中了。。原因尚不知道。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值