VC 设置字体
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。
例子:
1、改静态文体的ID,如:IDC_STATIC1
2、添加一个Edit控件,建立一个关联的控件m_editControl。
3、在OnInitDialog中添加如下代码:
CFont * f;
f = new CFont;
f-> 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(f);
m_editControl.SetWindowText( "问专家 ");
GetDlgItem(IDC_STATIC1)-> SetFont(f);
需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量,如果把程序改成下面这样:
CFont f;
f.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(&f);
m_editControl.SetWindowText( "问专家 ");
GetDlgItem(IDC_STATIC1)-> SetFont(&f);
运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont f就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。
非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。
摘自: http://topic.csdn.net/t/20050501/17/3979892.html
设置TextOut 字体
CFont font,*pOldFont;
font.CreateFont(......); //此处参数较多,建议楼主上网查一下
pOldFont=pDC->SelectObject(&font);
pDC->TextOut(100,100,"123");
pDC->SelectObject(pOldFont);