可以换行或者用省略号
如 go to school
1.go to shc...
2.go to
  school1.用参数DT_END_ELLIPSIS
2.用参数DT_WORDBREAK, 但是不能与DT_SINGLELINE DT_VCENTER同用,如要垂直居中用DC_CALCRECT计算大小!

解决方案 »

  1.   

    记得在DrewText前dc.SetTextAlign(TA_LEFT)!!
      

  2.   

    CRect rectDraw(rect.left, rect.top, rect.left + 30, rect.bottom);

    for(int  i=0;i<  8;i++)
        {
          if(!m_crText[i].IsEmpty())
          {
            dc.SetTextColor(m_crTextColor[i]);
            dc.SetBkColor(m_crBackground);
            dc.DrawText(m_crText[i], &rectDraw, DT_LEFT | DT_END_ELLIPSIS);//DT_CENTER|DT_SINGLELINE|DT_VCENTER|DT_BOTTOM|DT_CALCRECT);
    rectDraw.OffsetRect(30, 0);
      }
        }
        dc.SelectObject(pOldFont);
      

  3.   

    我是把几个字符串分别写入到STATIC中,不是每个字符串都会超出范围,只有后面的几个而已,用了你的代码还是不行??
      

  4.   

    CRect rectDraw = rect;
      
        for(int  i=0;i<  8;i++)
        {
          if(!m_crText[i].IsEmpty())
          {
            rectDraw.right=rectDraw.left+30;
            if(rectDraw.right > rect.right) rectDraw.right = rect.right;
            dc.SetTextColor(m_crTextColor[i]);
            dc.SetBkColor(m_crBackground);
            dc.DrawText(m_crText[i],&  rect,DT_SINGLELINE|DT_MODIFYSTRING);//DT_CENTER|DT_SINGLELINE|DT_VCENTER|DT_BOTTOM|DT_CALCRECT);
            rectDraw.left=rectDraw.right;
          }
        }
        dc.SelectObject(pOldFont);
      }