如何将无法显示的字符串用。代替

        在进度条上分了很多个RECT,每个RECT都 显示一个Operation名字,当 名字很长时,无法显示全部,这时候需要对字符串做处理。我的方法是,当字符串的长度小于RECT的宽度时,直接将字符串在RECT的中间显示。当大于RECT的宽度时,则需要以RECT的宽度为基准。具体实现C++代码如下:

 

    CSize size = dc.GetTextExtent(str);
  if(size.cx<=m_pArrRects[i].Height()) //when rect.Weigth<=currently rect.height,direct showing;
  {
   dc.TextOut(m_pArrRects[i].CenterPoint().x + size.cy/2 ,m_pArrRects[i].CenterPoint().y-size.cx/2,str);
  }
  else//when rect.Weigth>currently rect.height,delete the end character to adapt the rect
  {
   int strLength=(m_pArrRects[i].Height()-40)/10;
   if(strLength%2==1)//Use for Jap,and chinese
   {
    strLength=strLength+1;
   }
   CString strAdd="...";
   CString strShort;
   strShort=str.Left(strLength);
   strShort+=strAdd;
   dc.TextOut(m_pArrRects[i].CenterPoint().x + size.cy/2 ,m_pArrRects[i].top,strShort);
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值