设置Ctatic控件的字体颜色

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_DONTCARE0
FW_THIN100
FW_EXTRALIGHT200
FW_ULTRALIGHT200
FW_LIGHT300
FW_NORMAL400
FW_REGULAR400
FW_MEDIUM500
FW_SEMIBOLD600
FW_DEMIBOLD600
FW_BOLD700
FW_EXTRABOLD800
FW_ULTRABOLD800
FW_BLACK900
FW_HEAVY900
以上各值是大约数,实际外观依赖字体大小,有的字体仅有FW_NORMAL,FW_REGULAR,FW_BOLD磅数。如果FW_DONTCARE被指定,则使用缺省磅数。  bItalic         :字体是否为斜体 
bUnderline      :字体是否带下划线
  cStrikeOut      :字体是否带删除线

  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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值