1、建立基于对话框工程:My
2、添加控件:静态文本控件:IDC_STATIC1
编辑框控件:建立一关联变量CEdit m_EditControl
3、在OnInitDialog中添加如下代码:
CFont * m_pFont;
m_pFont = new CFont;
m_pFont->CreateFont(16, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight
TRUE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial")); // lpszFac
m_EditControl.SetFont(m_pFont,false);
m_EditControl.SetWindowText("Hello!");
GetDlgItem(IDC_STATIC1)->SetFont(m_pFont,false);
注:
1、
需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量,如果把程序改成下面这样:
CFont m_pFont;
运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont m_pFont就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。
2、
也可以定义CMyDlg类的成员变量:
CFont *m_pFont;
或CFont m_Font;
3、
若编辑框控件IDC_EDIT1未定义CEdit变量m_EditControl,可以如下调用:
CEdit* m_EditControl = (CEdit*)GetDlgItem(IDC_EIDT1);
m_EditControl->SetFont(m_pFont,false);
非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。
CreateFont()函数的MSDN翻译
函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择。
函数原型:
HFONT CreateFont(int nHeight,
int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace);nHeight是字体的高度。
nWidth是字体的宽度。
nEscapement是字体的倾斜角。
nOrientation是字体的倾斜角。
fnWeight是字体的粗细。
fdwItalic是字体是否斜体。
fdwbUnderline是字体是否有下划线。
fdwStrikeOut是字体是否有删除线。
fdwCharSet是字体使用的字符集。
fdwOutPrecision是指定如何选择合适的字体。
fdwClipPrecision是用来确定裁剪的精度。
fdwQuality是怎么样跟选择的字体相符合。
fdwPitchAndFamily是间距标志和属性标志。
lpszFacel是字体的名称。