|
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
|