任意のデバイスコンテキストにTextOut関数で固定ピッチフォント「MSゴシック」を
描画したいのですが上手くいきません。
例えば、下記のようなコードでテキスト出力しても、2行目の「MSゴシック」が1行目の
「MSPゴシック」と全く同じに出力されてしまい固定ピッチフォントになりません。
関数エラーも出てないので、上手くいってるように見えるんですが...
やり方が悪いんでしょうか?教えて下さい。
CPaintDC dc(this); //デバイスコンテキスト
CFont new_font, *old_font;
int line_height = 15;
//1行目表示
new_font.CreatePointFont(90, MSPゴシック, &dc);//フォント作成
old_font = dc.SelectObject(&new_font); //フォント選択
dc.TextOut(0, line_height * 0, 01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ);
dc.SelectObject(&old_font); //元のフォント
new_font.DeleteObject();
//2行目表示
new_font.CreatePointFont(90, MSゴシック, &dc);//フォント作成
old_font = dc.SelectObject(&new_font); //フォント選択
dc.TextOut(0, line_height * 0, 01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ);
dc.SelectObject(&old_font); //元のフォント
new_font.DeleteObject();
フォントフェイス名が間違っているようですね.
MS ゴシックは「S」と「ゴ」の間に半角空白が必要です.
指定したフォントフェイス名が見つからない場合に
Windowsが適当なのをチョイスしている結果だと思います.
EnumFontFamilies等でMSPゴシックの方も正確なフェイス名を
ゲットした方がよいと思います.
>kuさん
ご指摘の通り、フォントフェイス名の間違いで、半角空白を入れたらちゃんと表示されました。
コードを書き直してEnumFontFamiliesを使っても上手くいきました。
おかげで問題が解決しました、どうもありがとうございました。