0

ユーザーがOfficeMathML数式オブジェクトを挿入できるようにするRichEditコントロールがあります。

基本的に、ロジックは次のようになります。ユーザーが数式の挿入をクリックし、外部の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番目の位置になり、3番目に挿入されます。

基本的に2で割ると、Unicodeは1バイトしか必要としないANSIと比較して、2バイトかかるためだと思います。つまり、私はRTF、RichEdit、およびVisualBasic6の経験がないダミーです。

だから私の質問は:sendMessage行を使用して画像を貼り付けるときに画像の位置を変更できますか?

または、RichEditボックスに挿入される画像の位置を制御する他の方法を使用しますか?

4

2 に答える 2

0

プロパティを見るrtf.SelRTFと、RichTextBox でビジュアルを作成している RTF コードが何であるかを正確に確認できます。次に、それをファイルに保存し、それをワードにロードして、適切な場所に来るまで画像を移動し、ファイルを保存して、RTF コードをもう一度見ることができます。その時点で、中国語またはその他の Unicode 言語の組み合わせについて十分に理解して、目的の文字列操作コードを作成する必要があります。すべての Unicode 文字が 2 バイトであるかどうかは完全にはわかりません。完全な範囲をサポートすることに真剣に取り組んでいる場合は、チェックする価値があります。

それが役立つことを願っています。

于 2009-01-30T13:34:21.733 に答える