Private Declare Function CreateCaret& Lib "user32" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long)
Private Declare Function ShowCaret& Lib "user32" (ByVal hwnd As Long)
Private Declare Function SetCaretPos& Lib "user32" (ByVal x As Long, ByVal y As Long)
Private Declare Function HideCaret& Lib "user32" (ByVal hwnd As Long)
Private Declare Function DestroyCaret& Lib "user32" ()
Private Sub Form_Load()
Form1.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
Picture1.FontSize = 14
End Sub
Private Sub Picture1_Click()
' Picture1_GotFocus
End Sub
Private Sub Picture1_GotFocus()
Dim dl&
Dim CreateHeight As Integer
CreateHeight = Picture1.TextHeight("I")
dl& = CreateCaret(Picture1.hwnd, 0, 2, CreateHeight)
dl& = SetCaretPos(Picture1.CurrentX, Picture1.CurrentY)
dl& = ShowCaret(Picture1.hwnd)
End Sub
Private Sub Picture1_KeyPress(KeyAscii As Integer)
Dim dl&
dl& = HideCaret(Picture1.hwnd)
Picture1.Print Chr(KeyAscii);
If Picture1.CurrentX >= (Picture1.Width - Picture1.TextWidth("W")) Then '换行
Picture1.CurrentX = 0
Picture1.CurrentY = Picture1.CurrentY + Picture1.TextHeight("I")
End If
dl& = SetCaretPos(Picture1.CurrentX, Picture1.CurrentY)
dl& = ShowCaret(Picture1.hwnd)
End Sub
Private Sub Picture1_LostFocus()
Dim dl&
' dl& = DestroyCaret
End Sub