実行時に作成されたMFCテキストコントロールのWindows clearTypeを有効にする

StackOverflow https://stackoverflow.com/questions/1583137

質問

実行時にいくつかのCSTATICとCEDITコントロールを作成するMFCダイアログプログラムがあります。どういうわけか、これらのコントロールのテキストはクリアタイプの有効化ではありません(Windowsのクリアタイプは、サブピクセルのポジショニングと着色によってテキストを滑らかにします)。

ただし、Visual Studioツールボックスから設計時に「編集コントロール」または「静的テキスト」コントロールを手動で追加すると、これらのコントロールはクリアタイプの有効です。

どういうわけか、ツールボックスからのコントロールは、実行時に作成されたコントロールとは異なりますか?実行時に作成されたテキストコントロールのクリアタイプを有効にする方法を知っている人はいますか?これは、ダイアログのオンクリート関数におけるCSTATITコントロール作成のコードスニペットです。

CRect crc; crc.SetRect(100, 10, 300, 40);
m_static.Create(_T("Personeelsnummer?"), WS_CHILD | WS_VISIBLE, crc, this, IDC_STATIC1);

このCSTATICコントロールのテキストは、クリアタイプの有効化ではありません。別のフォントを設定しても効果はありません。

道に迷いました。

役に立ちましたか?

解決

私は自分の質問に対する答えを見つけました。実行時に作成されたコントロールにクリアタイプがないことは、フォント関連です。実行時にコントロールを作成すると、ClearTypeの影響を受けないデフォルトのフォントが使用され、別のフォントに置き換える必要があります。

私の質問では、別のフォントを設定しようとしたが、ローカル関数でフォントを作成したことに注意しました。フォントが設定された関数を終了した後、フォントが破壊されたため、違いは見られませんでした。私は現在、親CWNDが破壊されたときにのみ破壊されるフォントのクラスメンバー変数を持っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top