我正在实现一个简单的MFC文本编辑器,我遇到了我的查找函数的麻烦。特别是在我的"查找框"对话框类中,我有以下代码:
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。
这完全取决于当前光标选择的位置。如果你输入了这个单词,那么你的光标很可能会直接位于输入的单词的后面。如果您不关心光标的位置,那么您可以将位置设置为开头,并开始从开头查找文本:
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标志被忽略。搜索是总是向前。