001
002
003
#pragma once
004
005
006
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
038
039
040
041
042
#include "stdafx.h"
043
#include "Label.h"
044
045
046
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
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
}