哪位大侠知道如何让某个控件(eg:静态文本框)的背景色和窗口的背景色相同?

时间:2021-02-10 14:49:13
哪位大侠知道如何让某个控件(eg:静态文本框)的背景色和窗口的背景色相同?谢谢!

9 个解决方案

#1


WM_CTLCOLOR

#2


用了但是改不了让它和背景色一样,只能设置它的背景颜色

#3


定义了两个类:CMyStatic、CMyRadio。前者用于设置静态文本控件的前景色和背景色,后者用于设置单选按钮、复选按钮和组合框的前景色和背景色。实际上,这两个类的内容完全一样,只是CMyStatic派生于CStatic类,而CMyRadio派生于CButton类。 
在类中,我重载了消息函数CtlColor(),在其中修改控件的背景色和文本颜色,又提供了两个接口函数:void SetForeColor(COLORREF color)用于设置文本颜色、void SetBkColor(COLORREF color)用于设置控件背景颜色。 
// MyRadio.cpp : implementation file 

// 
#include "stdafx.h" 

#include "OwnDrawControl.h" 

#include "MyRadio.h" 
#ifdef _DEBUG 

#define new DEBUG_NEW 

#undef THIS_FILE 

static char THIS_FILE[] = __FILE__; 字串5 

#endif 
///////////////////////////////////////////////////////////////////////////// 

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

//用于修改控件前景色和背景色 

HBRUSH CMyRadio::CtlColor(CDC* pDC, UINT nCtlColor) 
字串8





pDC->SetTextColor( m_ForeColor ); 

pDC->SetBkColor( m_BackColor ); 

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

}

#4


回答的 不错 

#5


先得到父窗口的颜色,然后在ON_WM_CTLCOLOR_REFLECT() 里设置这个颜色就行了。
这个是比较标准的做法。

#6


引用 5 楼 healer_kx 的回复:
先得到父窗口的颜色,然后在ON_WM_CTLCOLOR_REFLECT() 里设置这个颜色就行了。 
这个是比较标准的做法。

#7



∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

力争成为中国最大的架构师群联盟,架构师技术交流群:28995710已接近尾声,62402336正式开放!!!

已经上传的*软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

#8



∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

力争成为中国最大的架构师群联盟,架构师技术交流群:28995710已接近尾声,62402336正式开放!!!

已经上传的*软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

#9


xuexi

#1


WM_CTLCOLOR

#2


用了但是改不了让它和背景色一样,只能设置它的背景颜色

#3


定义了两个类:CMyStatic、CMyRadio。前者用于设置静态文本控件的前景色和背景色,后者用于设置单选按钮、复选按钮和组合框的前景色和背景色。实际上,这两个类的内容完全一样,只是CMyStatic派生于CStatic类,而CMyRadio派生于CButton类。 
在类中,我重载了消息函数CtlColor(),在其中修改控件的背景色和文本颜色,又提供了两个接口函数:void SetForeColor(COLORREF color)用于设置文本颜色、void SetBkColor(COLORREF color)用于设置控件背景颜色。 
// MyRadio.cpp : implementation file 

// 
#include "stdafx.h" 

#include "OwnDrawControl.h" 

#include "MyRadio.h" 
#ifdef _DEBUG 

#define new DEBUG_NEW 

#undef THIS_FILE 

static char THIS_FILE[] = __FILE__; 字串5 

#endif 
///////////////////////////////////////////////////////////////////////////// 

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

//用于修改控件前景色和背景色 

HBRUSH CMyRadio::CtlColor(CDC* pDC, UINT nCtlColor) 
字串8





pDC->SetTextColor( m_ForeColor ); 

pDC->SetBkColor( m_BackColor ); 

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

}

#4


回答的 不错 

#5


先得到父窗口的颜色,然后在ON_WM_CTLCOLOR_REFLECT() 里设置这个颜色就行了。
这个是比较标准的做法。

#6


引用 5 楼 healer_kx 的回复:
先得到父窗口的颜色,然后在ON_WM_CTLCOLOR_REFLECT() 里设置这个颜色就行了。 
这个是比较标准的做法。

#7



∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

力争成为中国最大的架构师群联盟,架构师技术交流群:28995710已接近尾声,62402336正式开放!!!

已经上传的*软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

#8



∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

力争成为中国最大的架构师群联盟,架构师技术交流群:28995710已接近尾声,62402336正式开放!!!

已经上传的*软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

#9


xuexi