Sollyu

  • 捐赠
  • 关于
  1. 首页
  2. 原创文章
  3. 正文

MFC 改变static字体颜色、大小、背景颜色【自定义类】

2014年5月29日 10055点热度 1人点赞 0条评论

static字体

添加新类

新建一个MFC标准Dialog工程并生成一个CStatic的自定义类,我的类名为CColorStatic

static字体
static字体
static字体

定义必要变量

protected:  
    COLORREF m_crText;          // 字体颜色  
    COLORREF m_crBackColor;     // 背景颜色  
    HBRUSH   m_hBrush;          // 画刷  
    LOGFONT  m_lf;              // 字体大小  
    CFont    m_font;            // 字体

    bool    m_bTran;            // 是否透明

添加代码

重载CColorStatic类中的=WM_CTLCOLOR事件,是有=,不是WM_CTLCOLOR事件

HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor)  
{  
    // TODO:  在此更改 DC 的任何属性

    // TODO:  如果不应调用父级的处理程序,则返回非 null 画笔  
    if (CTLCOLOR_STATIC == nCtlColor)  
    {  
        pDC->SelectObject(&m_font);  
        pDC->SetTextColor(m_crText);  
        pDC->SetBkColor(m_crBackColor);  
        if (m_bTran == true)  
            pDC->SetBkMode(TRANSPARENT);  
    }  
    return m_hBrush;  
}

另外添加一些接口类函数

void CColorStatic::SetTextColor( COLORREF crText )  
{  
    m_crText = crText;  
    RedrawWindow();  
}

void CColorStatic::SetFontSize(int nSize)  
{  
    nSize *= -1;  
    m_lf.lfHeight = nSize;  
    m_font.DeleteObject();  
    m_font.CreateFontIndirect(&m_lf);  
    RedrawWindow();  
}

void CColorStatic::SetBackColor(COLORREF crBackColor)  
{  
    m_crBackColor = crBackColor;  
    RedrawWindow();  
}

void CColorStatic::SetTransparent(bool bTran)  
{  
    m_bTran = bTran;  
    RedrawWindow();  
}

至此就结束了。

Demo部分代码

void CColorStaticDomeDlg::OnBnClickedOk()  
{  
    // TODO: 在此添加控件通知处理程序代码  
    //OnOK();  
    m_static1.SetTransparent(FALSE);  
    m_static1.SetTextColor(RGB(255,0,0));  
    m_static1.SetBackColor(RGB(0,255,0));  
    m_static1.SetFontSize(15);

    m_static2.SetTextColor(RGB(0,255,255));  
    m_static2.SetFontSize(20);  
}
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: MFC static VC++ 大小 颜色
最后更新:2014年5月29日

sollyu

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2021 sollyu.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

苏ICP备15007531号