CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

有关在Richedit中向上文本搜索的问题

楼主flyer_2001()2004-12-03 00:59:04 在 VC/MFC / 界面 提问

需要从光标的位置向前搜索一个字符,代码段如下:  
  FINDTEXTEX   ft;  
  ft.chrg.cpMin   =   0;  
  ft.chrg.cpMax   =   -1;  
  ft.lpstrText   =   "|";  
  long   lPos   =   FindText(0,   &ft);  
  if   (lPos   !=   -1)  
  {  
  SetSel(ft.chrgText);  
  }  
   
  但是中返回的是字符中的第一个   "|"所在的位置,而不是当前光标的前一个"|"所在的位置,虽然用CString   也可以取到,但有些问题,如果有回车位置就不正确了,上一种有什么错误吗?怎样才能解决这个问题?  
  谢谢!解决后可另开贴给分  
   
   
  问题点数:100、回复次数:12Top

1 楼fengqinggao(风清高)回复于 2004-12-03 01:24:35 得分 0

CEditView有一个函数:  
  BOOL   FindText(   LPCTSTR   lpszFind,   BOOL   bNext   =   TRUE,   BOOL   bCase   =   TRUE   );  
   
  其中第二个参数就是确定你的搜索方向的,这样操作应该可以:  
   
  ((CEditView*)this)->FindText(sYourStr,   FALSE,   TRUE);  
   
  如果发现,它会自动选中该文本,如果没有,返回为0,可能需要你自己弹出消息框提示用户  
   
  这是我想采用的方法,仅供参考  
   
  Top

2 楼fengqinggao(风清高)回复于 2004-12-03 01:26:07 得分 0

上面的代码我是考虑你在CRichEidtView中处理的,如果是CRichEditCtrl,可能需要再转换一下Top

3 楼flyer_2001()回复于 2004-12-03 11:19:09 得分 0

多谢   fengqinggao(风清高)   ,我是在CRichEditCtrl中使用,它的原型为  
  long   FindText(   DWORD   dwFlags,   FINDTEXTEX*   pFindText   )   const;  
   
  但是始终是用不正确,请您指点一下,非常感谢!  
  Top

4 楼fengqinggao(风清高)回复于 2004-12-03 11:32:21 得分 0

先尝试一下我上面的强制转换的方法(即将CRichEditCtrl类转换成CRichEditView类),如果能够转换成功,就能使用CRichEditView的FindText(),这样就方便了,我也顺便看看CRichEditCtrl类的该函数的用法Top

5 楼fengqinggao(风清高)回复于 2004-12-03 11:43:27 得分 100

然后这样试一试看看:  
  ft.chrg.cpMin   =   你光标现在所在位置;  
  ft.chrg.cpMax   =   0;  
   
  按照CSDN上的说法,应该是可以的。你的设置是在所有文本中搜索,它当然就从文本开头开始搜索了,得到第一个“|”是正常的Top

6 楼flyer_2001()回复于 2004-12-03 13:07:30 得分 0

谢谢   fengqinggao(风清高)  
  强制转换结果不正确  
  第二方法也不行,我再试试这些参数  
  Top

7 楼flyer_2001()回复于 2004-12-03 13:08:37 得分 0

//////  
  按照CSDN上的说法,应该是可以的。你的设置是在所有文本中搜索,它当然就从文本开头开始搜索了,得到第一个“|”是正常的  
  //////  
   
  不过我参数是设置从当前光标向前搜索  
   
  Top

8 楼fengqinggao(风清高)回复于 2004-12-03 13:58:22 得分 0

这是CSDN中的原话:  
  You   can   search   either   up   or   down   by   setting   the   proper   range   parameters   in   the   CHARRANGE   structure   within   the   FINDTEXTEX   structure  
   
  意思是只要设置FINDTEXTEX结构中的CHARRANGE结构就可以完成向前向后搜索  
  而CHARRANGE结构只有两个参数,即“起始位置”和“终止位置”,于是将起始位置设置为当前光标位置,终止位置设置为文本的起点(0),就应该能达到目的  
   
  可惜没时间新建一个工程去做测试一下……Top

9 楼blackboxboyb(jin)回复于 2004-12-03 14:48:06 得分 0

注意:richedit中如果有\r\n   的话,在得到坐标的时候要考虑   加上\r\n的个数!Top

10 楼flyer_2001()回复于 2004-12-03 14:50:09 得分 0

多谢!  
  先结贴!  
  如果有解决方案或实例代码请贴到此处,另外开贴给分。非常感谢!Top

11 楼fengqinggao(风清高)回复于 2004-12-03 21:03:20 得分 0

测试中,未果,甚至用了EM_FINDTEXTEX发送消息,都不行,奇怪Top

12 楼flyer_2001()回复于 2004-12-04 01:24:11 得分 0

是啊,不知道为什么?  
  Top

相关问题

  • RichEdit删除选中文本????
  • 文本内容搜索?难!
  • RichEdit中如何处理纯文本?
  • 很小的问题:RichEdit文本样式。
  • RichEdit中的文本对齐问题?
  • richedit的文本拷贝问题
  • 如何用Sendmessage改变RichEdit文本
  • 如何在文本换行的时候自动向上滚屏?
  • 如何讓文本框里的文本向上滾動,或者滾動條自動向下滾動
  • 怎样才能使文本框中的文字垂直向上、垂直居中?

关键词

  • 文本
  • 转换
  • 代码
  • 结构
  • 解决
  • findtextex
  • chrg
  • ft
  • 光标
  • findtext

得分解答快速导航

  • 帖主:flyer_2001
  • fengqinggao

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo