1、首先通过以下代码,给CRichEditCtrl控件添加文字:        CString str = _T("编号1");
SetSel(nLen, nLen);
str.AppendFormat(_T("\n"));
ReplaceSel(str);
2、再通过以下代码查找文字中的“编号”
        static TCHAR szBuffer[4] = _T("编号\0");
FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = -1;
ft.lpstrText = (LPCWSTR)szBuffer; long n = FindText(FR_DOWN, &ft);
现在的问题是:以上方法可以找出位置,但是当文本大于37行时,FindText函数就一直返回-1,请高手指点一下,谢谢

解决方案 »

  1.   

    可能和工程是否是Unicode、标志位的值FR_MATCHCASE、FR_WHOLEWORD等等有关。
    试一试通过发送消息:lResult = SendMessage(      // returns LRESULT in lResult     (HWND) hWndControl,      // handle to destination control     (UINT) EM_FINDTEXTEXW,      // message ID     (WPARAM) wParam,      // = (WPARAM) () wParam;    (LPARAM) lParam      // = (LPARAM) () lParam; );  
    或者lResult = SendMessage(      // returns LRESULT in lResult     (HWND) hWndControl,      // handle to destination control     (UINT) EM_FINDTEXTEX,      // message ID     (WPARAM) wParam,      // = (WPARAM) () wParam;    (LPARAM) lParam      // = (LPARAM) () lParam; );  
    看看效果
      

  2.   

    尝试在CXXXApp::InitInstance()中加入
    AfxInitRichEdit();//不加这个东西,不能正常使用richedit,可能是个bug吧
      

  3.   

    如果这也是bug,微软测试人员是干什么吃的?如果所有东西都像想像的那样,那编程就简单了。
      

  4.   

    俺利用getwindowtex和memcmp组合自己查找。