richtextbox中如何获取鼠标所在的行号
最好能给出代码,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




