Все, кроме цвета фона, работает. А вот с ним не получается.
Использовал такой код:
- Код: Выделить всё
Private Sub RTF_SetBackcolor(ByVal Color As Long)
Dim cf As CHARFORMAT2, ret As Long
If Color = SystemColorConstants.vbWindowBackground Then
cf.crBackColor = Color
cf.dwMask = 0&
cf.dwEffects = CFM_BACKCOLOR
Else
cf.crBackColor = Color
cf.dwMask = CFM_BACKCOLOR
cf.dwEffects = 0&
End If
cf.cbSize = LenB(cf)
ret = SendMessage(rtfMessage.hWnd, EM_SETCHARFORMAT, SCF_SELECTION, cf)
End Sub
Не работает видимо потому, что RTB не поддерживает задание цвета фона.
Но RTB поддерживает тег \highlight. Только вот как его задать через API я не нашел.
На крайний случай можно его задавать напрямую, в TextRTF, но не хотелось бы, слишком много всего делать -- запоминать текущую позицию курсора, парсить colortbl, при необходимости добавлять цвет в таблицу и переиндексировать, вставлять теги, вырезав те \highlight, что внутри, восстанавливать позицию курсора.