VB gives you no control on the size of the text caret. At times it can be necessary to change its size, however, for example when you want to signal that the TextBox is in overwrite mode. Here’s a routine that does the trick:
Private Declare Function GetFocus Lib "user32" () As LongPrivate Declare Function CreateCaret Lib "user32" (ByVal hWnd As Long, _ ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As LongPrivate Declare Function ShowCaret Lib "user32" (ByVal hWnd As Long) As Long' Create and show a caret of given sizeSub ShowCustomCaret(ByVal width As Integer, ByVal height As Integer) CreateCaret GetFocus(), 0, width, height ShowCaret GetFocus()End Sub
The above routine is meant to be invoked from within the GotFocus event of all textboxes on the form. This is necessary because VB has the bad habit to destroy any caret when the focus move to another field:
Private Sub Text1_GotFocus() ' Show a caret 5 pixelz wide and 14 pixels tall ShowCustomCaret 5, 14End Sub