BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet,
BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename );
参数说明:
nHeight :字体高度.>0:字体的高度值;=0:字体采用缺省直.<0:此值的绝对值为高度.
nWidth :字体宽度.
nEscapement :文本行的倾斜度.
nOrientation :字符基线的倾斜度.
nWeight:
指定字体磅数(用每1000点中墨点像素数计)。尽管nWeight可为0到1000中的任意整数值,常用值和常数如下:
常数 | 值 |
FW_DONTCARE | 0 |
FW_THIN | 100 |
FW_EXTRALIGHT | 200 |
FW_ULTRALIGHT | 200 |
FW_LIGHT | 300 |
FW_NORMAL | 400 |
FW_REGULAR | 400 |
FW_MEDIUM | 500 |
FW_SEMIBOLD | 600 |
FW_DEMIBOLD | 600 |
FW_BOLD | 700 |
FW_EXTRABOLD | 800 |
FW_ULTRABOLD | 800 |
FW_BLACK | 900 |
FW_HEAVY | 900 |
nCharSet :字体的字符集
.ANSI_CHARSET
.DEFAULT_CHARSET
.SYMBOL_CHARSET.....
nOutPrecision :字符的输出精度
nClipPrecision :字符裁剪的精度
nQuality :字符的输出质量
nPitchAndFamily :字符间距和字体族(低位说明间距,高位说明字符族)
lpszFacename :字体名称
http://www.kaifa6.com/v/mfcshouce/Class/CFont_CreateFont.htm
设置字体
BOOL CTMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//CFont m_Font;
m_Font.CreateFont(-12,0,0,0,700,
0,1,0,0,0,0,0,0,
_T( "宋体 "));
CEdit *m_Edit=(CEdit *)GetDlgItem(IDC_EDIT1);
m_Edit->SetFont(&m_Font,FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
小小说明:在OnInitDialog()中的//CFont m_Font;前的"//"号去掉,将类声明中的CFont m_Font;去掉会是什么结果?请自己试试.
设置字体
SetDlgItemText(IDC_STATIC1,"你好"); //设置文本
设置颜色
由于CStatic没有现成的接口,要么自己继承CStatic然后重写WM_CTLCOLOR的响应函数。要么在父窗口重写WM_CTLCOLOR的响应函数,然后调用相应的接口来改变文字颜色,原理如下:
“在绘制控件前,Windows向该控件的父窗口发送一条WM_CTLCOLOR消息,目的是获得该控件的颜色”,在该响应函数中修改颜色的参数。
HBRUSH CAboutDig::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,0,255)); //设置字体颜色
pDC->SetBkMode(TRANSPARENT); //设置背景透明
}
}
第三个参数OnCtlColor主要有以下的值:
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滚动条
CTLCOLOR_STATIC 静态文本
2.你可能觉得对所有的控件使用统一的界面设置觉得不自由,其实VC同样可以对特定的ID的控件进行设置,方法如下:
switch(pWnd->GetDlgCtrlID())
{
//针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置
case IDC_CTL1:
case IDC_CTL2:
case IDC_CTL3:
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255, 0));
pWnd->SetFont(cFont);
HBRUSH B = CreateSolidBrush(RGB(125,125,255));
return (HBRUSH) B;
}
default:
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
HBRUSH CAFamlyLianxiDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_STATIC)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC1:
case IDC_STATIC2:
case IDC_STATIC3:
case IDC_STATIC4:
case IDC_STATIC5:
case IDC_STATIC6:
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0, 255));
break;
}
case IDC_STATIC7:
case IDC_STATIC8:
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,69, 214));
break;
}
default:
break;
}
}
return hbr;
}