3

こんにちは私はいくつかのテキストを含むテキストボックスを持っています。私は赤いつづりの間違いの波線タイプの振る舞いを再現しようとしています。

WinAPIを使用して私はできます

  • 2点の間に波線を描きます。
  • 「波打つ」単語の高さと幅を調べます。

テキストボックス内でその単語の位置を見つけて、その下にsqiggleを配置できるようにするための、api呼び出し(または、複数のapi呼び出しの場合は方法論)とは何ですか。

また、波線が確実に再描画されるようにするためにトラップする必要のあるメッセージは何ですか。私は現在WM_PAINTのみを使用していますが、これは明らかに十分ではありません。

編集(2012年9月3日):参考までに、これまでのところここに到達しました。多くの改良が必要ですが、基本的な原則を示しています

https://gist.github.com/3607272

多くのthx

S

4

1 に答える 1

1

うまくいくかもしれないのは、自動サイズのラベルを使用することです。ラベルとテキストボックスのフォントが同じであることを確認してください。

  1. スペルミスのある単語を含む文の前にある行数を検出します。
  2. ラベルのキャプションに、vbcrlf質問1で取得した改行番号()を入力します。
  3. スペルミスのある行から(スペルミスのある単語まで)ラベルのキャプションに単語を追加します。
  4. ラベルのサイズは、スペルミスのある単語の先頭と同じになります。

テキストの例:

This is my first line.
And my second line.
And over here i have my mispeled word.

ラベルキャプションの出力は次のようになります(ドットは無視してください。空の行です)。

.
.
And over here i have my

スクロールバーがない限り、ラベルの高さと幅はテキストボックス内の位置と一致する必要があります。テキストボックスに境界線がある場合は、高さと幅に固定値を追加して、完全に一致させる必要があります。

于 2013-03-12T12:33:07.317 に答える