您的位置:首页 > 其它

MFC中可以设置字体颜色,背景色,前景色,是否透明

2013-04-16 11:22 459 查看
001
//////////////////////////////
label.h ////////////////////
002
003
#pragma
once
004
005
006
//
Label
007
008
class
Label
:
public
CStatic
009
{
010
DECLARE_DYNAMIC(Label)
011
012
public
:
013
Label();
014
virtual
~Label();
015
016
protected
:
017
DECLARE_MESSAGE_MAP()
018
private
:
019
CFont*
m_pFont;
020
public
:
021
CFont
font;
022
COLORREF
m_clrFont; 
//
字体颜色
023
COLORREF
m_clrBack; 
//
背景颜色
024
BOOL
m_bTransparent;
//
是否透明
025
afx_msg
void
OnPaint();
026
void
SetFont(CString
_strFontName,
UINT
_nFontSize);
027
};
028
029
030
031
//////////////////////////////////////////////////////////////
032
033
034
035
036
037
////////////
label.cpp //////////////////
038
039
//
Label.cpp : 实现文件
040
//
041
042
#include
"stdafx.h"
043
#include
"Label.h"
044
045
046
//
Label
047
048
IMPLEMENT_DYNAMIC(Label,
CStatic)
049
050
Label::Label()
051
:
m_bTransparent(FALSE)
052
{
053
int
nCount;
054
LOGFONT
lf;
055
memset
(&lf,
0,
sizeof
(LOGFONT));
056
057
//设置字体样式
058
nCount
=
sizeof
(lf.lfFaceName)/
sizeof
(
TCHAR
);
059
_tcscpy_s(lf.lfFaceName,
nCount, TEXT(
"宋体"
));
060
lf.lfHeight
= 12;
061
lf.lfWeight
= 2;
062
lf.lfCharSet
= GB2312_CHARSET;
063
064
m_pFont
=
new
CFont;
065
m_pFont->CreateFontIndirect(&lf);
066
}
067
068
Label::~Label()
069
{
070
}
071
072
073
BEGIN_MESSAGE_MAP(Label,
CStatic)
074
ON_WM_PAINT()
075
END_MESSAGE_MAP()
076
077
078
079
//
Label 消息处理程序
080
081
082
083
void
Label::OnPaint()
084
{
085
CPaintDC
dc(
this
);
086
RECT
rect;
087
CString
strCaption;
088
 
089
GetWindowText(strCaption);
090
GetClientRect(&rect);
091
dc.SetTextColor(m_clrFont);
092
093
if
(m_bTransparent)
094
{
095
dc.SetBkMode(TRANSPARENT);
096
}
097
else
098
{
099
dc.SetBkColor(m_clrBack);
100
}
101
102
dc.SelectObject(*m_pFont);
103
dc.DrawText(strCaption,
&rect, DT_LEFT);
104
}
105
106
void
Label::SetFont(CString
_strFontName,
UINT
_nFontSize)
107
{
108
int
nCount;
109
LOGFONT
lf;
110
memset
(&lf,
0,
sizeof
(LOGFONT));
111
112
//设置字体样式
113
nCount
=
sizeof
(lf.lfFaceName)/
sizeof
(
TCHAR
);
114
_tcscpy_s(lf.lfFaceName,
nCount, _strFontName);
115
lf.lfHeight
= _nFontSize;
116
lf.lfWeight
= 2;
117
lf.lfCharSet
= GB2312_CHARSET;
118
119
delete
m_pFont;
120
m_pFont
=
new
CFont;
121
m_pFont->CreateFontIndirect(&lf);
122
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐