Ich habe ein RTF-Feld. Wenn ich jetzt nun die Einf.-Taste drücke dann soll sich auch die Einfügemarke ändern (breiter werden).
Nach langem Suchen habe ich im Internet zwar ein Beispiel gefunden. Dieses war für VB6 geschrieben. Ich habe dieses dann mal testhalber in mein Projekt eingebaut.
Nur funktioniert das nicht so wie erwartet. Denn die Einfügemarke verändert zwar ihr Aussehen (wird ein sehr kurzer Strich anstatt wie erwartet breiter zu werden). Nachdem man dann ein Zeichen eingegeben hat sieht die Einfügemarke wieder ganz normal aus. Das Aussehen sollte aber solange bestehen bleiben bis ich wieder die Einf.-Taste drücke.
Wie stelle ich das denn nun an damit auch in VB2008 eine breite Einfügemarke erscheint?
Im Folgenden mal den Code den ich gefunden und eingebaut habe:
Code Snippet
Private
Declare Function CreateCaret Lib "User32" (ByVal hWnd As Long, _
ByVal hBitmap As Long, ByVal nWidth As Long, _
ByVal nHeight As Long) As Long
Private
Declare Function ShowCaret Lib "User32" (ByVal hWnd As Long) As Long
Private
Shared Sub SetNewCaret(hWnd As Long, ByVal nWidth As Long, ByVal nHeight As Long)
CreateCaret(hWnd, 0, nWidth, nHeight)
ShowCaret(hWnd)
End Sub
Private
Shared Sub EinfStat()
If CBool(Edit(A).Tag) Then
SetNewCaret(Edit(A).Handle, 8, 13)
Desktop.tspInsMod.Text =
"šB"
Else
SetNewCaret(Edit(A).Handle, 1, 13)
Desktop.tspInsMod.Text =
"EINFG"
End If
End Sub