MFC 改变static字体颜色、大

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

定义必要变量

protected:COLORREF m_crText;// 字体颜色COLORREF m_crBackColor;// 背景颜色HBRUSH m_hBrush;// 画刷LOGFONT m_lf;// 字体大小CFont m_font;// 字体boolm_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();}

至此就结束了。

Dome 部分代码

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

只有一条路不能选择——那就是放弃的路;

MFC 改变static字体颜色、大

相关文章:

你感兴趣的文章:

标签云: