问题是这样的。
我将richedit的某一行设置成了只读,且已成功。代码如下:
m_rtf.SetEventMask(m_rtf.GetEventMask() | ENM_PROTECTED);
:CHARFORMAT cf;cf.cbSize = sizeof( cf );
cf.dwMask = CFM_PROTECTED;
cf.dwEffects = CFE_PROTECTED;
   int line;
   int nStart;
   int nEnd;
   nStart= m_rtf.LineIndex(-1);
   line=m_rtf.LineFromChar(nStart);
   nEnd=m_rtf.LineIndex(line+1);        
   m_rtf.SetSel(nStart,nEnd); 
   m_rtf.SetSelectionCharFormat( cf );
现在我想将设置了只读的一行恢复到默认的编辑状态,也就是可读也可写。我到底该怎么做? 请高手明示啊。
谢谢啦 

解决方案 »

  1.   

    cf.cbSize = sizeof( cf );
    cf.dwMask = CFM_PROTECTED;
    cf.dwEffects = CFE_PROTECTED;m_rtf.SetSelectionCharFormat( cf );你这样设置的只读,那反过来再设置回去不行吗?
    我没做过,只是猜测
      

  2.   

    把这个ENM_PROTECTED去掉不行么?
      

  3.   

    m_rtf.SetEventMask(m_rtf.GetEventMask() & ~ENM_PROTECTED);
      

  4.   

    m_rtf.SetEventMask(m_rtf.GetEventMask() & ~ENM_PROTECTED);正解!
      

  5.   

    注意:
    m_rtf.SetEventMask(m_rtf.GetEventMask() | ENM_PROTECTED);
    我不是在只读函数中设置的,而是在创建richedit的函数中设置的。这段代码是设置行只读的整个代码:
    CHARFORMAT cf;cf.cbSize = sizeof( cf );
    cf.dwMask = CFM_PROTECTED;
    cf.dwEffects = CFE_PROTECTED;
      int line;
      int nStart;
      int nEnd;
      nStart= m_rtf.LineIndex(-1);
      line=m_rtf.LineFromChar(nStart);
      nEnd=m_rtf.LineIndex(line+1);   
      m_rtf.SetSel(nStart,nEnd);  
      m_rtf.SetSelectionCharFormat( cf );如果我想再次设置行只读该怎么办?