devxlogo

Read and modify a TextBox control’s formatting rectangle

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 LongPrivate Type RECT    Left As Long    Top As Long    Right As Long    Bottom As LongEnd TypeConst EM_GETRECT = &HB2Const 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.BottomEnd 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, lpRectEnd Sub

devx-admin

Share the Post: