LOGFONT構造体を使うと次のようになります。 前回と同じ内容です。
// // MyApp.h // class MyApp : public MyMainWnd{ public: // WM_PAINT void wmPaint(HDC hdc){ MyDC g(hdc); HFONT hOldFont, hNewFont; // フォント LOGFONT Font; // LOGFONT構造体 Font.lfHeight = -13; // 文字の高さ Font.lfWidth = 0; // 文字幅 Font.lfEscapement = 0; // 文字方向とX軸との角度 Font.lfOrientation = 0; // 各文字とX軸との角度 Font.lfWeight = FW_NORMAL; // 太さ Font.lfItalic = FALSE; // イタリック体 Font.lfUnderline = FALSE; // 下線 Font.lfStrikeOut = FALSE; // 打ち消し線 Font.lfCharSet = SHIFTJIS_CHARSET; // キャラクタセット Font.lfOutPrecision = OUT_DEFAULT_PRECIS; // 出力精度 Font.lfClipPrecision = CLIP_DEFAULT_PRECIS; // クリッピングの精度 Font.lfQuality = ANTIALIASED_QUALITY; // 出力品質 Font.lfPitchAndFamily = VARIABLE_PITCH | FF_MODERN; // ピッチとファミリ lstrcpy(Font.lfFaceName, L"MS Pゴシック"); // フォント名 hNewFont = CreateFont(Font.lfHeight, Font.lfWidth, Font.lfEscapement, Font.lfOrientation, Font.lfWeight, Font.lfItalic, Font.lfUnderline, Font.lfStrikeOut, Font.lfCharSet, Font.lfOutPrecision, Font.lfClipPrecision, Font.lfQuality, Font.lfPitchAndFamily, Font.lfFaceName); hOldFont = (HFONT)SelectObject(hdc, hNewFont); g.TextOut(10, 10, L"Hello!"); SelectObject(hdc, hOldFont); // 元のフォントに戻す DeleteObject(hNewFont); // フォントを開放 } };
結果は前回と同じです。
LOGFONT構造体は次のようになっています。引数は14個です。 CreateFont関数の引数と同じです。
typedef struct tagLOGFONT { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; TCHAR lfFaceName[LF_FACESIZE]; } LOGFONT;
構造体なので継承ができます。