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: |
Click here to copy the following block | 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
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
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 |
|