我从一个txt文件中读取数据,显示到一个CEdit控件中,Edit的大小是固定的,也就是说,遇到边界时需要自动换行,因此设置了Want Return和Multiline属性,但是DrawText时并没有自动换行。
CFont* pOldFont = pDC->SelectObject(m_pFont);
pDC->DrawText(m_strText, -1, rect, DT_LEFT);//CString m_strText存储文件内容
pDC->SelectObject(pOldFont);
请问,是怎么回事啊?只有这么点分了。

解决方案 »

  1.   

    pDC->DrawText(m_strText, -1, rect, DT_LEFT|DT_EDITCONTROL|DT_END_ELLIPSIS);
      

  2.   

    你还自绘CEdit啊?直接用CString赋值就可以吧,肯定是你哪儿弄错了!
      

  3.   

    楼上说的那你中属性都试过了,DT_WORDBREAK是有空格才换行,也不行。
    也没有自绘,就把背景变透明了。
    肯定是哪里弄错了,到底是哪里呢?一点一点看还是没有发现
    纠结了。。
      

  4.   

    SetWindowText,不知道为什么会报错???
      

  5.   

    DT_WORDBREAK | DT_EDITCONTROL 
      

  6.   

    加DT_EDITCONTROL和DT_EDITCONTROL试试。
    改成:
    pDC->DrawText(m_strText, -1, rect, DT_EDITCONTROL|DT_EDITCONTROL);//
      

  7.   

    SetWindowText  字符显示不出来
      

  8.   

    仔细观察指针所指向的内存区。
    你会发现,在CString 里存储的文本内容在换行地方,由原来的0d 0a 变成了0a.
    所以在CEdit中就不换行了。。解决办法:打开文件时,以二进制方式打开,然后将内容传给CString..ALT+6打开内存窗口。楼主去试试。。
      

  9.   

    不要选wantreturn,选了这个的话,你要在需要换行的地方加\r\n
      

  10.   

    Virtical scroll和multilines就可以自动换行了
      

  11.   

    你为什么要自己DrawText呢
    直接赋值不就可以么
      

  12.   

    用RichEdit试试,如果还没弄出来,我发一份代码给你
      

  13.   

    不行的话,把CEdit改为Rich Edit 2.0 Control,直接赋值给成员变量吧
      

  14.   

    DRAWTEXT不行
    你自己把文字分割
    然后分行显示不就可以吗?
      

  15.   

    属性设置的不对:AutoHScroll - False;Multiline - True; Want Return-False。这样就可以了。