Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Mar 31, 2001

TextBoxGetLineColumn - Get caret position in a multiline TextBox control

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

' Get the line/column coordinates of a given character (both are zero-based).
' If charIndex is negative, it returns the coordinates of the caret

Sub TextBoxGetLineColumn(tb As TextBox, ByVal charIndex As Long, line As Long, _
    column As Long)
    If charIndex < 0 Then charIndex = tb.SelStart
    ' Get the line number.
    line = SendMessage(tb.hwnd, EM_LINEFROMCHAR, charIndex, ByVal 0&)
    ' Get the column number by subtracting the line's start
    ' index from the caret position
    column = tb.SelStart - SendMessage(tb.hwnd, EM_LINEINDEX, line, ByVal 0&)
End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap