在工作中经常需要使用CStatic 在该控件属性中设置透明 是无效的 需通过代码实现其透明
方法1
直接在父窗体的OnCtlColor中更改
HBRUSH CDlgStockPrice::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
if (nCtlColor = CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
return hbr;
}
方法二 定义一个类 继承自CStatic 重写OnPaint 方法
#pragma once
// CColorStaticEx
class CColorStaticEx : public CStatic
{
DECLARE_DYNAMIC(CColorStaticEx)
public:
CColorStaticEx();
virtual ~CColorStaticEx();
protected:
DECLARE_MESSAGE_MAP()
public:
void SetFont(CFont font); //设置字体
void SetFontSize(int size); //设置字体大小
void SetTextColor(COLORREF color); //设置字体颜色
void SetHightFontColor(COLORREF color);
void SetHightTextSize(int size);
voi