2010-12-03 6 views
0

私はWindowsアプリケーションをC++で書かれており、Win32-APIを使用しています。アプリケーションのフォントスムージングをプログラム的に変更して、アプリケーションのユーザーが "none"、 "standard"、 "cleartype"のいずれかを選択できるようにします。グローバルスムージングの設定ではなく、アプリケーションのフォントスムージングを変更する

私は平滑化タイプを変更するためにSystemParametersInfo(SPI_SETFONTSMOOTHING、...)を使用しますが、これはWindowsのグローバルシステム設定を変更し、他のすべてのアプリケーションに影響します。アプリケーションのスムージングだけを変更する方法はありますか?

編集:明確化 - 私は自分のウィンドウ内に別のウィンドウを埋め込んでいるので、埋め込みウィンドウ内のフォントを制御できません。

答えて

3

はたぶんもっと簡単な方法がありますが、アンチエイリアシングを持つものがオフする1つの方法は、あなたが描くすべてのフォントを変更することがあり、そしてそのすべてのコントロールが使用ありがとうございました。

WM_GETFONTおよびWM_SETFONTを使用して、ほとんどのコントロールで使用されているフォントを取得または設定できます(両方ともHFONTオブジェクトハンドルを使用します)。

GetObjectを使用してHFONTにLOGFONT構造体を取得し、LOGFONTでアンチエイリアスフラグを調整してから、CreateFontIndirectで新しいHFONTを作成することができます。

フォントの一部がの場合は、アンチエイリアスまたはクリアタイプをオンにすることもできることに留意する価値があります。したがって、LOGFONT構造体を編集するときには、フォント名とフラグを変更する必要があります。

+1

LOGFONT.lfQualityがキーです。 –

関連する問題