當前位置:編程學習大全網 - 編程軟體 - vb裏行號是什麽

vb裏行號是什麽

個textbox,兩個label 代碼如下:

Option Explicit

Private Const EM_GETSEL = &HB0

Private Const EM_LINEFROMCHAR = &HC9

Private Const EM_LINEINDEX = &HBB

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

Private Sub Form_Load()

Dim lineno As Long, colno As Long

Call getCaretPos(Text1.hwnd, lineno, colno)

Label1.Caption = lineno

Label2.Caption = colno

End Sub

Public Sub getCaretPos(ByVal texthwnd As Long, lineno As Long, colno As Long )

Dim i As Long, j As Long

Dim lparam As Long, wparam As Long

Dim k As Long

'向文本框傳遞EM_GETSEL消息以獲取從起始位置到光標所在位置的字符數

i = SendMessage(texthwnd, EM_GETSEL, wparam, lparam)

j = i / 2 ^ 16

'向文本框傳遞EM_LINEFROMCHAR消息根據獲得的字符數確定光標所在行數

lineno = SendMessage(texthwnd, EM_LINEFROMCHAR, j, 0)

lineno = lineno + 1

'向文本框傳遞EM_LINEINDEX消息以獲取所在列數

k = SendMessage(texthwnd, EM_LINEINDEX, -1, 0)

colno = j - k + 1

End Sub

Private Sub Form_Resize()

Text1.Width = Me.ScaleWidth

End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)

Dim lineno As Long, colno As Long

Call getCaretPos(Text1.hwnd, lineno, colno)

Label1.Caption = lineno

Label2.Caption = colno

End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single , Y As Single)

Dim lineno As Long, colno As Long

Call getCaretPos(Text1.hwnd, lineno, colno)

Label1.Caption = lineno

Label2.Caption = colno

End Sub

  • 上一篇:北京現代普工工資怎麽樣?
  • 下一篇:學生學python的好處
  • copyright 2024編程學習大全網