MFC可以设置字体名称、大小、字体前景色、背景色的Static控件

// label.h 


#pragma once




// Label


class Label : public CStatic
{
	DECLARE_DYNAMIC(Label)


public:
	Label();
	virtual ~Label();


protected:
	DECLARE_MESSAGE_MAP()
private:
	CFont*	m_pFont;
public:
	CFont font;
	COLORREF m_clrFont;										// 字体颜色
	COLORREF m_clrBack;										// 背景颜色
	BOOL m_bTransparent;									// 是否透明
	afx_msg void OnPaint();
	void SetFont(CString _strFontName, UINT _nFontSize);
};






//










  label.cpp //


// Label.cpp : 实现文件
//


#include "stdafx.h"
#include "Label.h"




// Label


IMPLEMENT_DYNAMIC(Label, CStatic)


Label::Label()
: m_bTransparent(FALSE)
{
	int		nCount;
	LOGFONT	lf;
	memset(&lf, 0, sizeof(LOGFONT));


	//设置字体样式
	nCount	= sizeof(lf.lfFaceName)/sizeof(TCHAR);
	_tcscpy_s(lf.lfFaceName, nCount, TEXT("宋体"));
	lf.lfHeight	 = 12;
	lf.lfWeight  = 2;
	lf.lfCharSet = GB2312_CHARSET;


	m_pFont = new CFont;
	m_pFont->CreateFontIndirect(&lf);
}


Label::~Label()
{
}




BEGIN_MESSAGE_MAP(Label, CStatic)
	ON_WM_PAINT()
END_MESSAGE_MAP()






// Label 消息处理程序






void Label::OnPaint()
{
	CPaintDC dc(this);
	RECT rect;
	CString strCaption;
	
	GetWindowText(strCaption);
	GetClientRect(&rect);
	dc.SetTextColor(m_clrFont);


	if (m_bTransparent)
	{
		dc.SetBkMode(TRANSPARENT);
	}
	else
	{
		dc.SetBkColor(m_clrBack);
	}


	dc.SelectObject(*m_pFont);
	dc.DrawText(strCaption, &rect, DT_LEFT);
}


void Label::SetFont(CString _strFontName, UINT _nFontSize)
{
	int		nCount;
	LOGFONT	lf;
	memset(&lf, 0, sizeof(LOGFONT));


	//设置字体样式
	nCount	= sizeof(lf.lfFaceName)/sizeof(TCHAR);
	_tcscpy_s(lf.lfFaceName, nCount, _strFontName);
	lf.lfHeight	 = _nFontSize;
	lf.lfWeight  = 2;
	lf.lfCharSet = GB2312_CHARSET;


	delete m_pFont;
	m_pFont = new CFont;
	m_pFont->CreateFontIndirect(&lf);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值