rt.

解决方案 »

  1.   

    在它的属性上选上WantReturn和Multiline试试看。
      

  2.   

    只要设置Edit的属性为Multiline和want return,而去掉Auto HScroll就可以了。
      

  3.   

    选上WantReturn  Multiline 属性,不要滚动条
      

  4.   

    选中属性中的Multiline和want return
    CString str = "123\r\n345";
    GetDlgItem(IDC_EDIT1)->SetWindowText(str);
      

  5.   

    如何在代码中将Auto HScroll去掉?想使用ModifyStyle方法,但没找到Auto HScroll对应的值,只有WS_HSCROLL
      

  6.   

    只要设置Edit的属性为Multiline和want return,而去掉Auto HScroll就可以了。
    CString str = "123\r\n345";
    GetDlgItem(IDC_EDIT1)->SetWindowText(str);
      

  7.   

    stevecrisewu(月昊)
      这个我知道,我需要在代码中实现,不是直接设置控件属性。控件初始属性已设置了Auto HScroll,在代码中如何使程序运行时去掉这个属性?
      

  8.   

    先用:
    LONG old=LONG GetWindowLong(
      HWND hWnd,  // handle to window
      int nIndex  // offset of value to retrieve
    );
    获取属性值,之后用:
    LONG SetWindowLong(
      HWND hWnd,       // handle to window
      int nIndex,      // offset of value to set
      old&(~XX)   // new value
    );XX代表Auto HScroll的值(我忘了!)
      

  9.   

    我用的是CRichEditCtrl类,用ModifyStyle动态修改属性不奏效,方法如下:
    ModifyStyle(ES_AUTOHSCOLL,0);
    ModifyStyle(WS_HSCOLL,0);
    哪里有问题?
      

  10.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cwnd.3a3a.modifystyle.asp
      

  11.   

    支持多行除了动态创建时指定和设计时指定外,目前还不清楚
    其他属性可以试试用SetOptions,具体看MSDNpRichEdit->SetOptions(ECOOP_XOR,ECO_WANTRETURN |ECO_AUTOHSCROLL);
      

  12.   

    Styles页作如下设置:只选上Multiline和Vertical scroll,其它均为不选
      

  13.   

    设置Edit的属性为Multiline和want return,而去掉Auto HScroll
      

  14.   

    回复人:ding_chi(杀手之王)() 信誉:100 2004-06-29 20:27:00 得分:0 9楼 
     
     我用的是CRichEditCtrl类,用ModifyStyle动态修改属性不奏效,方法如下:
    ModifyStyle(ES_AUTOHSCOLL,0);
    ModifyStyle(WS_HSCOLL,0);
    哪里有问题? 
     
    ====================================
    设置了多行风格了吗???
    ------------------------------------
    体验速度,体验CSDN新版论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=3108679
      

  15.   


    我刚才试验一下,我的richedit的风格是这样的
        CONTROL         "",IDC_RICHEDIT1,"RICHEDIT",WS_BORDER,63,113,48,41
    运行的时候不论是setwindowlong还是SetOptions都不能动态的改变!1. m_richedit.ModifyStyle(0,ES_MULTILINE |ES_AUTOVSCROLL|WS_VSCROLL|ES_WANTRETURN);
    LONG n = GetWindowLong(m_richedit.m_hWnd,GWL_STYLE);
    n |= ES_MULTILINE |ES_AUTOVSCROLL|WS_VSCROLL|ES_WANTRETURN;
    SetWindowLong(m_richedit.m_hWnd,GWL_STYLE,n);2. m_richedit.SetOptions(ECOOP_OR,ECO_AUTOVSCROLL | 
       ECO_AUTOHSCROLL|ECO_VERTICAL|ECO_WANTRETURN);看来只能在设计的时候或者creat的时候指定了!不知道谁有解决的办法??
      

  16.   

    如果要换行的话,可以利用 CString strReceive = pb;

    pb = (char*)LPCTSTR(strReceive);
    nLen = m_richedit.GetTextLength();
    m_richedit.SetSel(nLen,nLen);
    m_richedit.ReplaceSel(pb); nLen = m_richedit.GetTextLength();
    m_richedit.SetSel(nLen,nLen);
    m_richedit.ReplaceSel("\r\n");
    或重载PreSubclassWindow中加入ModifyStyle,修改RichEdit的属性,其实有些功能自己可以实现的,不用Edit Or RichEdit的Style也可以的!!
    不知道在PreSubclassWindow中用ModifyStyle满足搂主需求不,PreSubclassWindow主要是用来在对话框的子窗体创建之前调用的函数,在那里可以修改ModifyStyle,不过我想不符合需要,因为和在rc中修改是一样的。还是用第一种方法,手动换行来的实际!!
      

  17.   

    To anuo008(小艾):
    首先,PreSubclassWindow中修改是无效的;
    其次,手动修改达不到我的目的。在需要换行处加入回车换行符,这就和原来的换行处混在了一起,如果这时我选择不自动换行了,你还能返回去吗?
      

  18.   

    如果非要动态改变的话,可以在原来控件的位置重新动态生成一个满足条件的控件,把原来控件的内容复制过来。
    CEdit的ES_RIGHT之类属性都只能用这种办法。
      

  19.   

    我有碰到这种问题,需要运行时动态切换多行属性.我的解决方案(已成功):设置多行时,销毁原先控件,创建一个新的控件.MSDN明确说明:
    多行风格(ES_MULTILINE)不允许在Edit运行时动态修改.只能创建时指定.=====================http://www.UIPower.com============================