MFC や Windows API を使用して、任意の文字列を (リッチ テキスト コントロール内ではなく) 画面に直接描画する必要があります。文字列内の文字は、フォント フェースまたは色が異なり、太字、斜体、下線、または 2 つの任意の組み合わせにすることができます。さらに、ユーザーは、選択した範囲内でテキストを折り返すことを選択でき、フォント サイズを調整してテキストを強制的に収めることができます。
私は次の行に沿って何かをすることを考えています:
- 部分文字列のベクトルとその形式に解析する
- GetCharABCWidthsFloat を使用してすべての部分文字列の幅を計算する
- 改行が必要な場所を手動で計算する
- テキストが収まるようにする必要がある場合は、小さいフォントで上記を繰り返します
- DrawTextW を使用して各部分文字列を個別に描画し、前の部分文字列の幅と改行ポイントを使用して位置を決定します。
より良いアプローチはありますか?そうでない場合、これを実装するときに知っておくべき落とし穴やコツはありますか?
(DrawText の DT_CALCRECT | DT_WORDBREAK フラグは認識していますが、a) 文字列全体で一貫したフォント/書式設定を前提としているため、それがうまくいくとは思いません。b) 掲示板の投稿で、斜体文字の幅を正しく計算しません。真実?)