我正在实现一个简单的MFC文本编辑器,我的find函数遇到了麻烦。特别是在我的查找框中'对话框类我有以下代码:
FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = -1;
ft.lpstrText = _T("wallaby");
long n = pmyRichEditCtrl->FindText(FR_MATCHCASE|FR_WHOLEWORD, &ft);
if (n != -1)
pmyRichEditCtrl->SetSel(ft.chrgText);
但是,即使将单词wallaby输入到控件中,n也总是-1。任何帮助将不胜感激。
答案 0 :(得分:1)
这一切都取决于当前光标选择的位置。如果您输入了单词,则很可能您的光标将直接定位在输入的单词之后。如果您不关心光标的位置,那么您可以将位置设置为开头,并从头开始查找文本:
pmyRichEditCtrl->SetSel( 0, 0 );
long n = pmyRichEditCtrl->FindText(FR_DOWN|FR_MATCHCASE|FR_WHOLEWORD, &ft);
另外,不要忘记设置FR_DOWN
参数来向前搜索。如果未设置此参数,则会从FINDTEXTEX.chrg.cpMin
:
Microsoft Rich Edit 2.0及更高版本:如果设置,则搜索从前进 FINDTEXTEX.chrg.cpMin;如果未设置,则搜索向后 FINDTEXTEX.chrg.cpMin。
Microsoft Rich Edit 1.0:忽略FR_DOWN标志。搜索是 永远向前。