CRichEditCtrl的FindText是否有bug?

rxd237 2011-09-22 06:29:57
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,请高手指点一下,谢谢
...全文
101 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-10-20
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
rxd237 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jennyvenus 的回复:]

俺利用getwindowtex和memcmp组合自己查找。
[/Quote]我最后也是先用这种方法了,但是这个问题还是没有解决
用户 昵称 2011-09-27
  • 打赏
  • 举报
回复
俺利用getwindowtex和memcmp组合自己查找。
工程师WWW 2011-09-23
  • 打赏
  • 举报
回复
如果这也是bug,微软测试人员是干什么吃的?如果所有东西都像想像的那样,那编程就简单了。
寂寞的秋叶 2011-09-23
  • 打赏
  • 举报
回复
尝试在CXXXApp::InitInstance()中加入
AfxInitRichEdit();//不加这个东西,不能正常使用richedit,可能是个bug吧
宇影周邵 2011-09-23
  • 打赏
  • 举报
回复
可能和工程是否是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; );
看看效果
rxd237 2011-09-23
  • 打赏
  • 举报
回复
等待高手
rxd237 2011-09-22
  • 打赏
  • 举报
回复
自己顶一下

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧