前提:在字符串"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才对啊大家看看为什么啊?
// 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才对啊大家看看为什么啊?
个人不建议使用GetGuffer
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你的问题是不是编码问题???
我把你写的代码粘过去,结果也是Min为4,Max为5
我的是VS2005 m_edit是CRichEditCtrl
有什么不一样吗?
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);