ChooseFont 関数の戻り値が期待通りに返されない

こんにちは、Platform SDK (Windows SDK) サポートチームです。

今回は、ChooseFont 関数を呼び出した際に期待した結果が得られない問題についてお知らせします。

 

現象

ChooseFont 関数を呼び出すと、ダイアログボックスが表示され、ユーザーが選択したフォントの情報が CHOOSEFONT 構造体に格納されます。

しかしながら、Windows 7 以降の OS において正しい結果が得られない場合があります。

具体的には、以下の問題が発生します。

  • BOLD フォントを選択しても、nFontType メンバの BOLD_FONTTYPE がセットされない。
  • ITALIC フォントを選択しても、nFontType メンバの ITALIC_FONTTYPE がセットされない。

 

原因

本現象は、Windows 7 以降の OS における不具合です。

ご不便をおかけし恐れ入りますが、本動作を変更する OS の設定や修正プログラムは、現時点ではありません。

 

対処方法

nFontType メンバを参照する代わりに、LOGFONT 構造体のメンバを参照してください。

  • lfWeight > 500 であれば、BOLD フォントが選択されたものと判断できます。
  • lfItalic が TRUE であれば、ITALIC フォントが選択されたものと判断できます。

 

対象製品

Windows 7 以降の OS

 

参考情報

ご参考までに、今回ご案内した情報に関するドキュメントを以下にご紹介します。

ChooseFont
<https://msdn.microsoft.com/ja-jp/library/cc410662.aspx>

CHOOSEFONT structure
<https://msdn.microsoft.com/en-us/library/windows/desktop/ms646832(v=vs.85).aspx>

LOGFONT structure
<https://msdn.microsoft.com/en-us/library/windows/desktop/dd145037(v=vs.85).aspx>