在RichTextBox中鼠标点击后如何得到当前行数值

Tadpole0510 2003-10-10 09:56:45
在RichTextBox中鼠标点击后如何得到当前行数值
...全文
300 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tadpole0510 2003-10-10
  • 打赏
  • 举报
回复
l = SendMessage(RichTextBox1.hwnd, EM_LINEINDEX, -1, 0)代表行索引号吗,有什么用途?
一定结分!
rainstormmaster 2003-10-10
  • 打赏
  • 举报
回复
'注意得到的行数以0开始,即返回0为第一行

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
Const EM_LINEINDEX = &HBB




Private Sub Command1_Click()
'然后在程序中这样使用:
Dim l, a

RichTextBox1.SetFocus
l = SendMessage(RichTextBox1.hwnd, EM_LINEINDEX, -1, 0)
Debug.Print l
a = SendMessage(RichTextBox1.hwnd, EM_LINEFROMCHAR, l, 0)
Debug.Print a
End Sub

Private Sub Form_Load()
Dim i As Long
For i = 1 To 100
Me.RichTextBox1.Text = Me.RichTextBox1.Text + "assffrerertteiieioiopiopiopiopioiopiopeeee这个各个共同达到的aaa" + vbCrLf
Next
End Sub
Tadpole0510 2003-10-10
  • 打赏
  • 举报
回复
鼠标点击后的光标所在行
rainstormmaster 2003-10-10
  • 打赏
  • 举报
回复
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
Const EM_LINEINDEX = &HBB
Const EM_LINESCROLL = &HB6 '以行为单位,卷动TexBox
Const EM_GETFIRSTVISIBLELINE = &HCE



Private Sub Command1_Click()
On Error Resume Next
'然后在程序中这样使用:
Dim a As Long, fline As Long
'获取richtextbox控件的可见第一行
fline = SendMessage(RichTextBox1.hwnd, EM_GETFIRSTVISIBLELINE, 0&, ByVal 0&)
MsgBox fline
RichTextBox1.SetFocus
a = SendMessage(RichTextBox1.hwnd, EM_LINEFROMCHAR, -1, 0)
Debug.Print a
Dim sline As Long
sline = a - fline
'滚动
Call SendMessage(RichTextBox1.hwnd, EM_LINESCROLL, 1&, ByVal sline)
End Sub

Private Sub Form_Load()
Dim i As Long
For i = 1 To 100
Me.RichTextBox1.Text = Me.RichTextBox1.Text + "assffrerertteiieioiopiopiopiopioiopiopeeee这个各个共同达到的aaa" + vbCrLf
Next
End Sub


rainstormmaster 2003-10-10
  • 打赏
  • 举报
回复
l = SendMessage(RichTextBox1.hwnd, EM_LINEINDEX, -1, 0)代表行索引号吗,有什么用途?
返回光标所在行第一个字符的编号,一般情况下只有获得了这个编号,才能使用EM_LINEFROMCHAR消息

事实上:
Private Sub Command1_Click()
'然后在程序中这样使用:
Dim a As Long
RichTextBox1.SetFocus
a = SendMessage(RichTextBox1.hwnd, EM_LINEFROMCHAR, -1, 0)
Debug.Print a
End Sub

就足够了

对消息不熟的话,可以参考:
文本框控件的消息及应用
http://www.yesky.com/20001012/121819.shtml

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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