您的位置:首页 > 其它

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

2012-07-09 19:56 671 查看
 


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

定义必要变量

[cpp] view
plaincopyprint?

protected:  

    COLORREF m_crText;          // 字体颜色  

    COLORREF m_crBackColor;     // 背景颜色  

    HBRUSH   m_hBrush;          // 画刷  

    LOGFONT  m_lf;              // 字体大小  

    CFont    m_font;            // 字体  

  

    bool    m_bTran;            // 是否透明  

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

[cpp] view
plaincopyprint?

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;  

另外添加一些接口类函数

[cpp] view
plaincopyprint?

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();  

}  

至此就结束了。

Dome 部分代码

[cpp] view
plaincopyprint?

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

}  

引自:http://blog.csdn.net/kingsollyu/article/details/6973396
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc dialog null
相关文章推荐