MFC控件自绘-Static Text
来源:互联网 发布:软件的生存周期 编辑:程序博客网 时间:2024/05/23 22:43
MFC使用Static Text显示文本,想改变字体和显示方式很麻烦,用ActiveX中的Label控件可以很好的解决Static Text存在的问题,但使用时需要装微软的那一套东西(以前写的程序 用了Label,必须安装微软办公软件才能运行),着实让人心烦。
能不能实现一个方便的文本显示控件呢?纠结了半天,一会百度,一会CSDN,着实花了我一番功夫,最后在别人的基础上改进了一些东东,还是让我给实现了,虽然没有Label那么强大,但还是很好用的。
//////////////////////////////////////////////////////ULabel.h/////////////////////////////////////////////////////////////
#pragma once
class ULabel : public CStatic
{
public:
ULabel();
virtual ~ULabel();
private:
CFont* m_pFont;
CFont font;
COLORREF m_clrFont; // 字体颜色
COLORREF m_clrBack; // 背景颜色
BOOL m_bTransparent; // 是否透明
public:
void SetULabel(CString _strFontName, UINT _nFontSize, UINT _nWeight,
COLORREF _clrFont, COLORREF _clrBack, BOOL _bTransparent);
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
DECLARE_DYNAMIC(ULabel)
};
//////////////////////////////////////////////////////ULabel.h/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////ULabel.cpp///////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ULabel.h"
IMPLEMENT_DYNAMIC(ULabel, CStatic)
ULabel::ULabel()
: 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);
}
ULabel::~ULabel()
{
if(m_pFont != NULL)
{
delete m_pFont;
}
}
BEGIN_MESSAGE_MAP(ULabel, CStatic)
ON_WM_PAINT()
END_MESSAGE_MAP()
void ULabel::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_SINGLELINE | DT_VCENTER | DT_LEFT);
}
void ULabel::SetULabel(CString _strFontName, UINT _nFontSize, UINT _nWeight,
COLORREF _clrFont, COLORREF _clrBack, BOOL _bTransparent)
{
m_clrFont = _clrFont;
m_clrBack = _clrBack;
m_bTransparent = _bTransparent;
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 = _nWeight;
lf.lfCharSet = GB2312_CHARSET;
delete m_pFont;
m_pFont = new CFont;
m_pFont->CreateFontIndirect(&lf);
}
////////////////////////////////////////////////////ULabel.cpp///////////////////////////////////////////////////////////
- MFC控件自绘-Static Text
- MFC控件使用之Static Text
- MFC控件之Text Control(Static Text)
- 控件自绘Static
- MFC 自绘控件
- 自绘控件(mfc)
- MFC 控件自绘
- MFC实现STATIC TEXT控件的鼠标事件解决方案
- 在MFC中使用Static text控件显示消息
- MFC中设置Edit Control 和 Static Text控件学习
- MFC学习笔记(一):Static Text控件
- 在MFC中使用Static text控件显示消息
- MFC static text
- [MFC] Static Text超链接
- Static Text控件
- MFC自绘控件常识
- MFC之自绘控件
- MFC之自绘控件
- 用ruby统计英文文章的词频
- windows下!boost库的编译选项
- 精准定位才能赢得人心
- CSS3学习笔记(中)
- RESTful API 设计指南
- MFC控件自绘-Static Text
- ORACLE ERP 的前世今生
- Mongodb与spring集成(1)------配置
- iOS 在 XCode 6 中的福利:TestFlight
- C/C++ assert使用
- storm简介
- 命令行执行java程序
- css样式大全
- 使用 Bumblebee 控制 NVIDIA 双显卡(Ubuntu)