专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C语言教程 » 单选按钮:可配置颜色地静态控件、单选按钮等 »正文

单选按钮:可配置颜色地静态控件、单选按钮等

来源: 发布时间:星期四, 2009年2月12日 浏览:216次 评论:0


可设置颜色静态Control控件、单选按钮、复选框 我为对话框刷绘了个背景但往上放置Control控件后由于Control控件背景色和对话框不符使文字背后留下难看背景现在我定义了可设置背景色和前景色Control控件只要使Control控件背景色和对话框背景色相同问题就解决了

我定义了两个类:CMyStatic、CMyRadio前者用于设置静态文本Control控件前景色和背景色后者用于设置单选按钮、复选按钮和组合框前景色和背景色实际上这两个类内容完全只是CMyStatic派生于CStatic类而CMyRadio派生于CButton类

在类中我重载了消息CtlColor在其中修改Control控件背景色和文本颜色又提供了两个接口:void SetForeColor(COLORREF color)用于设置文本颜色、void SetBkColor(COLORREF color)用于设置Control控件背景颜色

// MyRadio.cpp : implementation file
//

# \"stdafx.h\"
# \"OwnDrawControl.h\"
# \"MyRadio.h\"

#def _DEBUG
# DEBUG_NEW
#undef THIS_FILE
char THIS_FILE = __FILE__;
#end

/////////////////////////////////////////////////////////////////////////////
// CMyRadio

CMyRadio::CMyRadio
{
m_ForeColor = GetSysColor( COLOR_BTNTEXT ); //文字颜色
m_BackColor = GetSysColor( COLOR_BTNFACE ); //背景色
m_BkBrush.CreateSolidBrush(m_BackColor); //背景刷
}

CMyRadio::~CMyRadio
{
}


BEGIN_MESSAGE_MAP(CMyRadio, CButton)
//{{AFX_MSG_MAP(CMyRadio)
ON_WM_CTLCOLOR_REFLECT
//}}AFX_MSG_MAP
END_MESSAGE_MAP

/////////////////////////////////////////////////////////////////////////////
// CMyRadio message handlers

//重载消息(=WM_CTLCOLOR注:不是WM_CTLCOLOR)
//用于修改Control控件前景色和背景色
HBRUSH CMyRadio::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetTextColor( m_ForeColor );
pDC->SetBkColor( m_BackColor );
(HBRUSH)m_BkBrush.GetSafeHandle;
}

void CMyRadio::SetForeColor(COLORREF color) //设置文本颜色
{
m_ForeColor = color;
}

void CMyRadio::SetBkColor(COLORREF color) //设置背景颜色
{
m_BackColor = color;
m_BkBrush.Detach;
m_BkBrush.CreateSolidBrush( m_BackColor );
}

具体使用方法请参考本文所附

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: