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
May 21, 2001

Read and modify a TextBox control's formatting rectangle

By sending appropriate messages to a multi-line TextBox control you can read and modify its formatting rectangle - that is, the inner portion of the control where the user can type. Modifying the size and position of this area can be useful, for example, to leave a left margin where you can add line numbers or other text markers. Here's is the complete source code for the two routines that read and modify the formatting rectangle:

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 Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Const EM_GETRECT = &HB2
Const EM_SETRECT = &HB3

' Get the formatting rectangle.

Sub TextBoxGetRect(tb As TextBox, Left As Long, Top As Long, Right As Long, _
    Bottom As Long)
    Dim lpRect As RECT
    SendMessage tb.hwnd, EM_GETRECT, 0, lpRect
    Left = lpRect.Left
    Top = lpRect.Top
    Right = lpRect.Right
    Bottom = lpRect.Bottom
End Sub

' Set the formatting rectangle and refresh the control.

Sub TextBoxSetRect(tb As TextBox, ByVal Left As Long, ByVal Top As Long, _
    ByVal Right As Long, ByVal Bottom As Long)
    Dim lpRect As RECT
    lpRect.Left = Left
    lpRect.Top = Top
    lpRect.Right = Right
    lpRect.Bottom = Bottom
    SendMessage tb.hwnd, EM_SETRECT, 0, lpRect
End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap