一 设置字体
在OnInitDialog()函数中添加代码
方法1:
newFont.CreatePointFont(160,L"楷体");
m_static_xsdj.SetFont(&newFont);
方法2:
CFont* font;
font=m_static_xsdj.GetFont();//获取CFont对象
LOGFONT lf;
font->GetLogFont(&lf);//获取LOGFONT结构体
lf.lfHeight=-26; //修改字体大小
lf.lfItalic=TRUE; //倾斜
lf.lfWeight=400; //修改字体的粗细
newFont.CreateFontIndirectW(&lf);//创建一个新的字体
m_static_xsdj.SetFont(&newFont);
二 修改静态文本框控件中文本颜色、文本背景颜色、和控件背景颜色
首先应当明确的是,在那个函数中下手(写代码),答案是 OnCtlColor()函数中,这个函数是用于响应WM_CTLCOLOR消息的,当控件需要重绘时会发出这个消息。
HBRUSH CDlgXSDJ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
三个参数:pDC表示与当前控件相关联的设备上下文,pWnd是当前控件的指针,nCtlColor 表示控件的类型,返回值是一个HBRUSH句柄,该句柄用户重绘控件的背景色。
然后说一下SetTextColor()、SetBkColor()、和SetBkMode()三个函数
SetTextColor()函数很明显是设置文本颜色的,而SetBkColor()函数不是用来设置控件背景颜色的,而是用来设置文本背景颜色的(就是包含文本的矩形)、SetBkMode()是用来设定文字背景模式的,参数只有两个选择OPAQUE、TRANSPARENT表示是否透明。
那么控件的背景颜色怎么设置呢?答案是通过返回的HBRUSH句柄。
HBRUSH CDlgXSDJ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if( IDC_STATIC_XSDJ == pWnd->GetDlgCtrlID())//判断发出消息的空间是否是该静态文本框
{
pDC->SetTextColor(RGB(255,0,0));//设置文本颜色为红色
pDC->SetBkMode(OPAQUE);//设置文本背景模式为透明
pDC->SetBkColor(RGB(0,0,255));//设置文本背景为蓝色
hbr=CreateSolidBrush(RGB(0,255,0));//控件的背景色为绿色
}
return hbr;//返回用于重绘控件背景的画刷
}