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 |
} |