静态文本控件类CStaticText的使用

文本是程序给予用户提示信息的一种方式,简单方便。使用MFC的同学们可能再也熟悉不过了,但是有时他也不尽人意,比如我们想像在Word中一样改变他的字体、颜色、大小等属性时MFC的静态文本控件却没有给我们提供相关的接口,为了解决这个问题,我们常用的方式就是自绘控件,但是对于初学者来说自绘也是“亚历山大”,所以这里给大家交流一下如何直接使用别人的成果--扩展控件类的使用。本次以“静态文本控件类CStaticText的使用”为例跟大家交流。

PS:关于这些类的来源需要大家平时多积累网上的资源......

先把类的源码贴出:

CStatic.h

class CStaticText : public CStatic
{
public:
	CStaticText();
    virtual ~CStaticText();

public:
    //设置字体
	void SetPointFont(bool bChangeFont = true, int nPointSize = 100, LPCTSTR lpszFaceName = TEXT("Microsoft Sans Serif"));
    //设置字符的颜色
	void SetColor(COLORREF color = RGB(0, 0, 0) );
    //设置文字
	void SetCaption(CString szCaption);

	bool m_bChangeFont; // 是否可以改变字体
	int m_nPointSize; // 字的大小
	UINT m_nFormat;  //显示字的格式用在DrawText 
	LPCTSTR m_lpszFaceName; // 字体的名字
	COLORREF m_color; //文字的颜色
	
protected:
	CString m_szCaption;
	//{{AFX_MSG(CStaticText)
	afx_msg void OnPaint();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
CStatic.cpp

#include "stdafx.h"
#include "StaticText.h"

CStaticText::CStaticText()
{ 
	m_szCaption = _T("");
	m_color = RGB(0, 0, 0);
	m_nPointSize = 120;
	m_lpszFaceName = _T("Arial");
	m_bChangeFont = FALSE;
	m_nFormat = DT_CENTER;
}

CStaticText::~CStaticText()
{

}

BEGIN_MESSAGE_MAP(CStaticText, CStatic)
//{{AFX_MSG_MAP(CStaticText)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/
// CStaticText message handlers
void CStaticText::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CRect rc;
	GetClientRect(&rc);
	CClientDC parentDC(GetParent());
	// TODO: Add your message handler code here
    CFont font;
	//font.CreatePointFont(m_nPointSize, m_lpszFaceName, NULL);
	VERIFY(font.CreatePointFont(m_nPointSize, m_lpszFaceName, NULL));
	CFont* pOldFont = dc.SelectObject(&font);
	dc.SetBkMode(TRANSPARENT);
	dc.SetTextColor(m_color);
	//dc.SetBkColor(RGB(123, 123, 123)); //设置文本背景如果设置背景模式是TRANSPARENT 的时候无论是什么颜色都和背景一样没有作用。
	dc.DrawText(m_szCaption, &rc, m_nFormat);
	dc.SelectObject(pOldFont);
	font.DeleteObject();
	// Do not call CStatic::OnPaint() for painting messages
}
void CStaticText::SetCaption(CString szCaption)
{
    m_szCaption = szCaption;
}
void CStaticText::SetColor(COLORREF color /* = RGB(0, 0, 0)*/)
{
    m_color = color;
}
void CStaticText::SetPointFont(bool bChangeFont, int nPointSize, LPCTSTR lpszFaceName)
{
    m_bChangeFont = bChangeFont;
	m_nPointSize = nPointSize;
	m_lpszFaceName = lpszFaceName;
}
下面是使用步骤:

1.当然是把源码复制下来添加到自己的工程啦;

2.在对话框类的头文件中添加文件包含:

#include "StaticText.h"
3.在对话框类的头文件中添加一个该文本类的公有成员变量:

public:
	CStaticText m_StaticCtrl;
4.在对话框类cpp实现:在对话框初始化函数OnInitDialog()中添加如下代码:

// TODO: 在此添加额外的初始化代码
CRect rect;
GetClientRect(&rect);
m_StaticRect = CRect(0, 20, rect.Width(), 150);
m_StaticCtrl.Create(_T(" "), WS_CHILD| WS_VISIBLE, m_StaticRect, this);
m_StaticCtrl.SetPointFont(true, 500);
m_StaticCtrl.SetCaption(_T("学生信息"));
m_StaticCtrl.SetColor(RGB(211, 123, 123));
5.效果如图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值