MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件

这篇博客介绍了如何在MFC中创建一个可设置背景色、字体和字体颜色,并支持透明背景的Static文本控件。虽然目前还无法实现指定透明度,但默认背景即为透明。作者提供了源码供读者参考。
摘要由CSDN通过智能技术生成

MFC库里没有符合这个条件的控件,于是我自己写了一个,初步测试有效。

注:可以设置透明背景,但还不能做到透明度设置(如50%透明度)

        如果设置了背景色,就不保留透明背景

        默认背景色是透明的

	// 设置背景色(若clr为CLR_NONE,则背景透明)
	void SetBackgroundColor(COLORREF clr){m_clrBackground = clr;}
	// 设置文字前景色
	void SetTextColor(COLORREF clr){m_clrText = clr;}
	// 设置文字字体
	void SetFont(CString strFaceName, LONG nHeight);


如何使用:

    1.先将RichStatic.h和RichStatic.cpp添加入工程
    2.对话框添加Static控件后,增加一个控件变量,类型设置为CRichStatic(或手动添加,在对话框类DoDataExchange中添加DDX_Control)


源码:

#pragma once


// CRichStatic

class CRichStatic : public CStatic
{
	DECLARE_DYNAMIC(CRichStatic)

public:
	CRichStatic();
	virtual ~CRichStatic();
	
protected:
    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    afx_msg LRESULT OnSetText(WPARAM,LPARAM);
	DECLARE_MESSAGE_MAP()
	virtual void PreSubclassWindow();

private:
	COLORREF m_clrText;          // 文字前景色
	COLORREF m_clrBackground;    // 文字背景色
	CFont *m_pTextFont;          // 文字字体
	CBitmap m_Bmp;               // 保存背景用的位图对象
	BOOL m_selfCreated;
public:
	// 设置背景色(若clr为CLR_N
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值