У нас есть элемент управления RichEdit, в который мы позволяет пользователю вставлять объект уравнения Office MathML.
В основном логика выглядит так: пользователь нажимает на вставку математического уравнения, мы разрешаем им использовать внешний редактор MathML, затем мы вставляем изображение для представления уравнения в элемент управления RichEdit:
' Paste the picture into the RichTextBox.
SendMessage ctlLastFocus.hwnd, WM_PASTE, 0, 0
Найдите его положение и зафиксируйте, используя:
With ctlLastFocus
'lock the image
.SelStart = .SelStart - 1
.SelLength = 1
.SelProtected = True
Все это прекрасно в прекрасном мире ANSI, но мы также разрешаем символы Unicode и что я заметил, так это то, что когда вы используете китайские символы, позиция вставки неверна на половину общей позиции, т.е. если она должна быть 7-й позицией, теперь она вставляется в третью.
Я полагаю, что в основном делится на два, потому что Unicode занимает два байта по сравнению с ANSI, для которого требуется только один. Потому что я болван без опыта работы с RTF, RichEdit и Visual Basic 6.
Итак, мой вопрос: могу ли я изменить положение изображения при его вставке с помощью строки sendMessage?
Или каким-либо другим способом контролировать положение изображения, вставленного в поле RichEdit?