因为默认的字体大小比较小,且有时为了美观,MFC控件的字体样式更改有时显得比较重要。这一修改并不是很直观,需要经由代码来完成,代码如下:
CFont *m_pFont;//创建新的字体
m_pFont = new CFont;
m_pFont->CreateFont(32, // 字体高度
0, // 字体宽度
0, // 字体倾斜角
0, // 字体倾斜角
FW_EXTRALIGHT, // 字体的粗细
FALSE, // 字体是否为斜体
FALSE, // 字体是否有下划线
0, // 字体是否有删除线
ANSI_CHARSET, // 字体使用的字符集
OUT_DEFAULT_PRECIS, // 指定如何选择合适的字体
CLIP_DEFAULT_PRECIS, // 确定裁剪的精度
DEFAULT_QUALITY, // 怎么样跟选择的字体相符合
DEFAULT_PITCH | FF_SWISS, // 间距标志和属性标志
_T("楷体")); // 字体的名称
//标签控件
m_EditControl.SetFont(m_pFont, false); //将编辑框与设置字体相关联
//按钮控件
mybutton.SetFont(m_pFont, false);//对于按键也同理,mybutton为CButton对象
//列表控件
list.SetFont(m_pFont, false);//list为CListCtrl对象
list.InsertColumn(0, _T("学号"), LVCFMT_LEFT, 110);
list.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 110);
要改变控件的字体颜色则更加复杂一点,需要做以下几点
1.定义画刷对象
CBrush m_Brush;//画刷工具
2.初始化画刷对象
m_Brush.CreateSolidBrush(GetSysColor(COLOR_3DFACE));//初始化画刷,用GetSysColor返回对话框背景色
3.添加对话框的WM_CTLCOLOR消息相应
4.在对话框的消息响应函数中添加如下代码
if (nCtlColor == CTLCOLOR_STATIC)//CTLCOLOR_STATIC为标签控件
{
if (pWnd->GetDlgCtrlID() == IDC_STATIC_FONT)//特定的某一个标签,IDC_STATIC_FONT为标签控件ID
{
pDC->SetBkMode(BKMODE_LAST);//透明
pDC->SetTextColor(RGB(255, 0, 0)); //文字颜色
//pDC->SetBkColor(RGB(251, 247, 200));//背景色
return (HBRUSH)m_Brush.GetSafeHandle();
}
}
经过上面的操作,可以得到如下的效果: