前提:在字符串"FindTextCSDN"中查找"Text"串FINDTEXTEX ft;
// strFindText 为 "Text"
ft.lpstrText = strFindText.GetBuffer();
ft.chrg.cpMin = findpos;
ft.chrg.cpMax = -1;
DWORD dwFindType = FR_DOWN;// 得到结果是ft的chrgtext的Min为4,Max为5,就一个字符长?
findpos = this->FindText(dwFindType, &ft);
// 应该是Min为4,Max为7才对啊大家看看为什么啊?

解决方案 »

  1.   

    你跟进去看看lpstrText得值是什么
    个人不建议使用GetGuffer
      

  2.   

    CString strText(_T("Text"));
    FINDTEXTEX ft; ft.lpstrText = strText;
    ft.chrg.cpMin = 0;
    ft.chrg.cpMax = -1; DWORD dwFindType = FR_DOWN;
    int pos = m_edit.FindText(dwFindType, &ft); int nMin = ft.chrgText.cpMin;
    int nMax = ft.chrgText.cpMax; CString strMsg(_T(""));
    strMsg.Format(_T("Min: %d, Max: %d"), nMin, nMax);
    AfxMessageBox(strMsg);
    VS2008 ,MessageBox输出是4,8你的问题是不是编码问题???
      

  3.   


    我把你写的代码粘过去,结果也是Min为4,Max为5
    我的是VS2005 m_edit是CRichEditCtrl
    有什么不一样吗?
      

  4.   

    你下代码2005运行正确
    FINDTEXTEX ft;
    char szFind[]="Text";ft.chrg.cpMin = 0;
    ft.chrg.cpMax = -1;ft.lpstrText = szFind;
    long n = m_reditTest.FindText(FR_DOWN, &ft);if (n != -1)
    m_reditTest.SetSel(ft.chrgText);