MFC中修改静态文本框中文字的字体、颜色

一    设置字体

在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;//返回用于重绘控件背景的画刷
 }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值