单行编辑框文本垂直居中(包含计算字体高度)

有时为了界面更漂亮,使用高度比较高的编辑框,但单行文本的编辑框文字是靠上显示的,反而不美观了,使文本垂直居中有两种方法:

1. 属性设为多行,不接收换行,然后计算中间位置,使用SetRect设置到文本位置(注意OnSize还要处理)

可在Create、OnCreate、PreSubClass里处理

2. 响应WM_NCCALCSIZE修改客户区居中,通过获取字体高度计算

void CEditEx::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
 TRACE("Enter %s\n", __FUNCTION__);

 CString cstrText(_T("字体test"));
 SIZE sz;
 GetTextExtentPoint32(GetDC()->GetSafeHdc(), cstrText, cstrText.GetLength(), &sz);
 
 int nBorder = (lpncsp[0].rgrc->bottom - lpncsp[0].rgrc->top - sz.cy) / 2;
 if(nBorder < 0)
  nBorder = 0;
 lpncsp[0].rgrc->top += nBorder;
 lpncsp[0].rgrc->bottom -= nBorder;

 CEdit::OnNcCalcSize(bCalcValidRects, lpncsp);
}


 两种方法都要用到计算字体高度,有3个函数可以使用:

GetTextExtentPoint32
GetTextExtent
GetTextMetrics

CDC*   pDC=GetDC();   
      TEXTMETRIC   tm;   
      pDC->GetTextMetrics(&tm);   
      int   nHeight=tm.tmHeight+tm.tmExternalLeading;   
      int   nWidth=tm.tmAveCharWidth;  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值