描画時に Rect サイズ (テキストの高さ) を計算する必要がある文字列があります。私の実装では、フラグDrawTextW()
付きの関数を使用しています。DT_WORDBREAK or DT_CALCRECT
私の文字列の例:
thisisaverylonglonglonglineoftextthatneedstofitinsideagivenrectwidth
MSDN docsで確認できますが、そのDrawTextW()
方法は次のように述べています。
最大の単語が四角形よりも広い場合、幅が拡張されます。テキストが四角形の幅より小さい場合は、幅が縮小されます。テキストが 1 行しかない場合、DrawText は四角形の右側を変更して、行の最後の文字を囲むようにします。
ただし、MSDNのドキュメントでは、DrawTextExW()
メソッドはこれを述べていません。
そのため、メソッドを使用して高さを計算しようとしましたDrawTextExW()
が、結果は関数と同じでDrawTextW()
、テキストの最大行に合わせて四角形の幅を拡張します。
DT_WORDBREAK
では、とが指定されている大きな文字列 (スペースなし) を描画するときに、特定の (固定) 幅でテキスト四角形の高さを正しく計算するにはどうすればよいDT_CALCRECT
ですか?
編集:
補足として、Microsoft Excel がセル テキストを描画する方法を知っている人はいますか? このテキスト描画の API 呼び出しはありますか? これが私の最初の質問の由来でしたが、Excel での実装方法は、(スペースだけでなく) 任意の文字にテキストとワードブレーク/ワードラップを描画することです。