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

richtextbox中如何获取鼠标所在的行号

楼主framset(framset)2002-03-05 23:05:53 在 VB / 基础类 提问

最好能给出代码,20分奉上 问题点数:20、回复次数:5Top

1 楼dbcontrols(泰山__抛砖引玉)回复于 2002-03-06 08:00:11 得分 8

Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long  
  Const   EM_LINEFROMCHAR   =   &HC9  
   
  Private   Sub   Command1_Click()  
  rc   =   SendMessage(RichTextBox1.hwnd,   EM_LINEFROMCHAR,   -1,   0)  
  MsgBox   Str(rc   +   1)  
  End   SubTop

2 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2002-03-06 08:37:07 得分 0

获得光标所在的行和列:  
  http://www.applevb.com/art/tg2.txtTop

3 楼sbnth(金鳞岂非池中物,一遇风云便化龙)回复于 2002-03-06 09:15:35 得分 12

Public   Declare   Function   SendMessage   Lib   "user32"   Alias   _  
                                                  "SendMessageA"   (ByVal   hwnd   As   Long,   _  
                                                                                  ByVal   wMsg   As   Long,   _  
                                                                                  ByVal   wParam   As   Long,   _  
                                                                                  lParam   As   Any)   As   Long  
  Public   Const   EM_GETSEL   =   &HB0  
  Public   Const   EM_LINEFROMCHAR   =   &HC9  
  Public   Const   EM_LINEINDEX   =   &HBB  
   
  Private   Sub   GetCaretPos(ByVal   TextHwnd   As   Long)  
   
  Dim   i   As   Long  
  Dim   j   As   Long  
  Dim   k   As   Long  
  Dim   lParam   As   Long  
  Dim   wParam   As   Long  
  Dim   lngRow   As   Long     '当前行  
  Dim   lngCol   As   Long     '当前列  
   
  '首先向文本框传递EM_GETSEL消息以获取从起始位置到  
  '光标所在位置的字符数  
   
  i   =   SendMessage(TextHwnd,   EM_GETSEL,   wParam,   lParam)  
  j   =   i   /   2   ^   16  
   
  '再向文本框传递EM_LINEFROMCHAR消息根据获得的字符  
  '数确定光标以获取所在行数  
   
  lngRow   =   SendMessage(TextHwnd,   EM_LINEFROMCHAR,   j,   0)  
  lngRow   =   lngRow   +   1  
   
  '向文本框传递EM_LINEINDEX消息以获取所在列数  
   
  k   =   SendMessage(TextHwnd,   EM_LINEINDEX,   -1,   0)  
  lngCol   =   j   -   k   +   1  
   
  End   Sub  
   
  在keyup和mousedown中调用该过程就可以了。Top

4 楼framset(framset)回复于 2002-03-07 12:33:00 得分 0

sbnth(晓风残夜思春水)   分已经给了,但我想问一下:  
   
  Public     Const     EM_GETSEL     =     &HB0    
  Public     Const     EM_LINEFROMCHAR     =     &HC9    
  Public     Const     EM_LINEINDEX     =     &HBB    
   
  这是什么意思,为何要这样赋值,还有那个值是怎么计算出来的?谢谢Top

5 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2002-03-07 13:56:54 得分 0

API   Viewer中都有定义Top

相关问题

  • DataGrid中,如何获取鼠标右键点击处的行号和列号?
  • 怎样获取DBGRID中鼠标点中的单元格的行号,列号和内容?
  • 如何获得鼠标点及datagrid的行号呢??
  • 请教:如何知道TStringGrid中鼠标双击的行号?
  • 怎样获得datagrid双击和鼠标移上时的行号。
  • jbuilder8终于支持行号和鼠标滚轮了,散分
  • 怎样获取Excel活动单元格的行号和列号?
  • SQL Server中怎么获取当前记录的行号??
  • 如何获取指定记录的行号?
  • 在ListView 中当鼠标移到某一行怎样取得当前行号?急!!!

关键词

  • longdim
  • linefromchar
  • getsel
  • 所在
  • hc9
  • byval
  • sendmessage
  • em
  • long
  • wparam

得分解答快速导航

  • 帖主:framset
  • dbcontrols
  • sbnth

相关链接

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

广告也精彩

反馈

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