CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

RichTextBox 中英文位置问题!

楼主rise139()2002-05-24 16:56:51 在 VB / 基础类 提问

我需要在RichTextBox中动态处理文本,   如:我在键入完一行文本回车后,   需要一段程序立即给出当前编辑行的开始位置和结束位置  
   
  sBuffer=RichText1.Text  
   
  for   i=   开始位置   to   结束位置  
        Select   Case   Asc(Mid(sBuffer,   i,   1))  
        处理过程  
        ......  
   
  我知道   API   可以完成,   现在的问题是,   文本中既有英文也有中文,用API   方式找到的位置在中英文混合方式下位置不对!   请不管用是么方法给出回车行的开始和结束的两个位置,   并在整个循环过程里把每个字符包括中文都能准确读到.   (请给出代码,UP等..   无分) 问题点数:50、回复次数:4Top

1 楼acev(睡眠不足(域名 .com ¥55,.cn ¥30 QQ:230567))回复于 2002-05-24 19:41:30 得分 10

 
  关注,UPTop

2 楼YHeng(我来也!!!!!!)回复于 2002-05-25 15:55:29 得分 40

Public   Sub   Get_Line()  
  Dim   lLineCount   As   Long,   lLineIndex   As   Long,   lCurrentByte   As   Long,   i   As   Long,   J   As   Long  
  Dim   lColNo   As   Long,   lLineLength   As   Integer  
      With   FrmMain.RichEdit  
                  lLineCount   =   SendMessage(.hwnd,   EM_GETLINECOUNT,   ByVal   0&,   .SelStart)  
                  lLineIndex   =   .GetLineFromChar(.SelStart)   +   1  
                  lCurrentByte   =   SendMessage(.hwnd,   EM_LINEINDEX,   -1,   0)     '取得目前光标所在行前面有多少个Byte  
                  lLineLength   =   SendMessage(.hwnd,   EM_LINELENGTH,   lCurrentByte,   0)   +   1   '取得当前行的长度  
                  i   =   SendMessage(.hwnd,   EM_GETSEL,   ByVal   0&,   ByVal   0&)  
                    J   =   i   /   65536   '取得目前光标所在位置前有多少个Byte  
                    lColNo   =   J   -   lCurrentByte   +   1  
      End   With  
               
      FrmMain.LbRow.Caption   =   "行:"   &   lLineIndex   &   "   /   "   &   lLineCount  
        FrmMain.LbCol.Caption   =   "列:"   &   lColNo   &   "   /   "   &   lLineLength  
               
  '         With   FrmMain.StatusBar1  
  '                   .Panels(2)   =   "行:"   &   lLineIndex   &   "   /   "   &   lLineCount  
  '                   .Panels(3)   =   "列:"   &   lColNo   &   "   /   "   &   lLineLength  
  '         End   With  
  End   Sub  
   
  以上代码摘自我自己的一个程序中的一个过程,您自己试试,希望能给您点帮助!Top

3 楼rise139()回复于 2002-05-26 01:40:00 得分 0

处理中文还是不成Top

4 楼rise139()回复于 2002-05-27 16:32:44 得分 0

谢谢各位,我想出办法解决了。  
  '返回当前行第一个字符位置,   行字符数量  
  Private   Sub   FindChar(RTFBox   As   RichTextBox,   FChar   As   Long,   BuffLen   As   Long)  
          Dim   astr   As   String  
          Dim   l,   l1,   l2   As   Long  
          Dim   SBuffer   As   String  
          Dim   lBufferLen   As   Long  
          Dim   F   As   Long  
           
          With   RTFBox  
                  SBuffer   =   Trim(.text   &   "   ")  
                  lBufferLen   =   Len(SBuffer)  
                   
                  '返回当前行的字符串  
                  astr   =   Space(1024)  
                  l   =   SendMessage(.hwnd,   EM_LINEINDEX,   -1,   0)  
                  iLineY   =   SendMessage(.hwnd,   EM_LINEFROMCHAR,   l,   0)   '取当前行号  
                   
                  '取当前行前的字符总数  
                  For   F   =   0   To   iLineY   -   1  
                          astr   =   Space(1024)  
                          l   =   SendMessageStr(.hwnd,   EM_GETLINE,   F,   ByVal   astr)  
                          FChar   =   FChar   +   Len(Trim(astr))  
                  Next  
                   
                  '当前行开始位置  
                  FChar   =   FChar   +   1:   astr   =   Space(1024)  
                  l   =   SendMessageStr(.hwnd,   EM_GETLINE,   iLineY,   ByVal   astr)  
                  astr   =   Trim(astr)   '取得光标所在行全部字符  
                  BuffLen   =   Len(astr)   -   2   '文本长度  
          End   With  
  End   SubTop

相关问题

  • 中英文
  • 急!帮我搞定RichtextBox中英文混合输入时出现乱码的问题
  • ps 中英文转换
  • 中英文转换问题。
  • 中英文界面的转化
  • 求《C++ STL》中英文版都行
  • 如何实现中英文对照表?
  • 关于中英文换行的问题
  • 如何区分中英文冒号
  • 中英文混合的论坛

关键词

  • 字符
  • 文本
  • fchar
  • astr
  • lcurrentbyte
  • iliney
  • sbuffer
  • 位置
  • richtextbox
  • em

得分解答快速导航

  • 帖主:rise139
  • acev
  • YHeng

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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