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是字體的名稱。