2 つの TextOut 呼び出しと TA_UPDATECP フラグを使用して、選択したテキストを描画しようとしましたが、選択した領域を移動すると、文字が少し移動します。
誰かがそれを行う正しい方法を知っていますか?
MSDNのドキュメントによると、SetTextAlign()を使用してTA_UPDATECPフラグを設定すると、TextOut()はその位置パラメーターを無視して、デバイスコンテキストの現在の位置を優先します。あなたのコードを見ずに、あなたの描画アルゴリズムが、選択に基づいてわずかに異なる現在の位置でTextOut()を呼び出しているのではないかと思います。
デバッグ戦略として、TextOut()を呼び出す直前にGetCurrentPositionEx()を呼び出して現在の位置を取得し、テキストが描画される場所の予想と一致することを確認できます。
アンチエイリアシングと ClearType は、小数のピクセル位置でテキストを描画できると思います。テキストの文字列を描画してから中央の一部を再描画しようとすると、中央の文字とまったく同じ位置からテキストを描画する方法がない場合があります。トリックは、文字列全体を再描画することのようですが、選択したテキストのクリッピング領域があります。
Win32 テキスト エディターの作成に関するこのチュートリアルでは、選択したテキストを描画する方法についてかなり詳しく説明しています。