MFC-HFONT字体
GDI中默认的字体,是系统等宽字体,比如对话框标题一般就采用这个字体。
LOGFONT
LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:
typedef struct tagLOGFONT { LONG lfHeight; //字体高度 LONG lfWidth; //字体宽度 LONG lfEscapement; //字体显示的角度 LONG lfOrientation; //字体的角度 LONG lfWeight; //字体的磅数(字体的深浅程度).取值范围0--1000,400为正常字体,700为黑体 0位默认值 BYTE lfItalic; //斜体字体 BYTE lfUnderline; //带下划线字体 BYTE lfStrikeOut; //带删除线字体 BYTE lfCharSet; //所需字符集 BYTE lfOutPrecision; //输出的精度 BYTE lfClipPrecision;//裁剪精度 BYTE lfQuality;//逻辑字体和输出设备的实际字体间的间距 BYTE lfPitchAndFamily; //字体间距和字体集 TCHAR lfFaceName[LF_FACESIZE]; //字体名称 } LOGFONT, * PLOGFONT;
HFONT
HDC hdc = ::GetDC(m_hWnd); LOGFONT lf = { 0 }; lf.lfWeight = 16; //平均宽度 lf.lfHeight = 40;//字体高度 lf.lfCharSet = GB2312_CHARSET;//字符集 //如GB2312_CHARSET,CHINESEBIG5_CHARSET等 //GB2312是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要 lstrcpy(lf.lfFaceName, _T("宋体")); //指向NULL结尾的字符串的指针,其长度不能超过32个字符,如果为空,则使用系统默认的字体 HFONT hfont = ::CreateFontIndirect(&lf);//创建逻辑字体 /* 创建的字体具有LOGFONT对象确定的特性 参数:CONST LOGFONT *lplf 返回值:如果函数调用成功,返回值是逻辑字体的句柄;如果函数调用失败,返回值是NULL */ HFONT holdfont = (HFONT)SelectObject(hdc, hfont); /* SelectObject返回的类型是HGDIOBJ,需要强转 */ RECT rect = { 50,50,400,400 }; DrawText(hdc, _T("GDI测试"), -1, &rect, DT_LEFT); SelectObject(hdc, holdfont); DeleteObject(hfont);