フォント

LOGFONT構造体を使う (win163)

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;

構造体なので継承ができます。


[前] [目次] [次]