查找不工作的函数



我正在实现一个简单的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标志被忽略。搜索是总是向前。

相关内容

  • 没有找到相关文章

最新更新