本人想在CRichEdit控件中"搜索/替换"某一字符串,例如把搜索"AAA"替换为"BBB"。请知道处理方法的朋友多多赐教,最好有一些参考代码?

解决方案 »

  1.   

    CRichEditCtrl *pRichEdit = (CRichEditCtrl*)GetDlgItem( IDC_EDITOR_TEXT );
    FINDTEXTEX aaa;
    aaa.chrg.cpMax = -1;
    aaa.chrg.cpMin = 0;
    aaa.lpstrText = "ef";
    long lPos = pRichEdit->FindText(FR_WHOLEWORD, &aaa);这段是我的处理方式"ef"字符串在RichEdit中是有的,但是long lPos = pRichEdit->FindText(FR_WHOLEWORD, &aaa);
    返回一直是-1;
      

  2.   

    我现在是能够找到"ef"了,但是对于RichEdit中有多个"ef"时为什么总是找到最上面的那个"ef"呢,若要继续往下找应该如何处理呢。请高手指教!!!!
      

  3.   

    aaa.chrg.cpMax = aaa.chrgText.cpMax 
    aaa.chrg.cpMin = aaa.chrgText.cpMin
    试试。
    其实就是把搜索起始位置改一下
      

  4.   

    我做了2个button:Serach/Serach Next;
    分别执行下列代码
    Serach:
    aaa.chrg.cpMin = 0;
    aaa.chrg.cpMax = -1;
    aaa.lpstrText = "ef";
    long lPos = m_RichEdit.FindText(FR_MATCHCASE, &aaa);
    if (lPos == -1)
    {
    MessageBox("Fail to find the string ef!");
    }
    else
    {
    m_RichEdit.SetSel(lPos,lPos+2);
    m_RichEdit.SetFocus();
    }
    Serach Next:
    aaa.chrg.cpMax = aaa.chrgText.cpMax; 
    aaa.chrg.cpMin = aaa.chrgText.cpMin;
    aaa.lpstrText = "ef";
    long lPos = m_RichEdit.FindText(FR_MATCHCASE, &aaa);
    if (lPos == -1)
    {
    MessageBox("Fail to find the string ef!");
    }
    else
    {
    m_RichEdit.SetSel(lPos,lPos+2);
    m_RichEdit.SetFocus();
    }定义全局变量FINDTEXTEX aaa;
    执行Serach时总是找到最上面的
    执行Serach Next时也没有找到下一个"ef",也是找到"ef".我debug Serach Next按钮时
    aaa.chrg.cpMax = aaa.chrgText.cpMax; 
    aaa.chrg.cpMin = aaa.chrgText.cpMin; 值已经修改请指教!!