#include "StdAfx.h"
|
#include "akStaticText.h"
|
#include "akMemDC.h"
|
|
BEGIN_MESSAGE_MAP(CakStaticText, CStatic)
|
ON_WM_ERASEBKGND()
|
ON_WM_CTLCOLOR_REFLECT()
|
END_MESSAGE_MAP()
|
|
|
CakStaticText::CakStaticText(void)
|
{
|
m_nFormat = DT_SINGLELINE | DT_LEFT | DT_TOP;
|
m_backcolor = RGB(236,233,216);
|
m_textcolor = RGB(0,0,0);
|
|
m_brush.CreateSolidBrush(m_backcolor);
|
|
m_bColorUpdate = false;
|
m_bFastMode = false;
|
m_nDrawOutline = false;
|
}
|
|
CakStaticText::~CakStaticText(void)
|
{
|
|
}
|
|
void CakStaticText::SetFastMode()
|
{
|
//setFont("Microsoft Sans Serif");
|
//setFontSize(14);
|
LOGFONT lf;
|
CFont* pfont = GetFont();
|
pfont->GetLogFont(&lf);
|
m_font.DeleteObject();
|
m_font.CreateFontIndirect(&lf);
|
|
ModifyStyle(NULL, WS_CLIPSIBLINGS | SS_OWNERDRAW , 0);
|
Invalidate(false);
|
|
m_bFastMode = true;
|
}
|
|
void CakStaticText::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
|
{
|
if(m_bColorUpdate == true)
|
{
|
m_brush.DeleteObject();
|
m_brush.CreateSolidBrush(m_backcolor);
|
m_bColorUpdate = false;
|
}
|
|
CRect rect;
|
GetClientRect(&rect);
|
|
CakMemDC memdc(CDC::FromHandle(lpDrawItemStruct->hDC));
|
|
CFont* pOldFont = (CFont*)memdc.SelectObject(m_font);
|
memdc.SetTextColor(m_textcolor);
|
memdc.SetBkColor(m_backcolor);
|
|
CBrush brushback(m_backcolor);
|
|
memdc.SelectObject(brushback);
|
memdc.FillRect(rect, &brushback);
|
|
|
|
if(m_nDrawOutline == 0)//draw outline
|
{
|
CRect rectDraw = rect;
|
memdc.Draw3dRect(&rectDraw, m_clrOutline, m_clrOutline);
|
rectDraw.DeflateRect(1,1,1,1);
|
memdc.Draw3dRect(&rectDraw,m_clrOutline2, m_clrOutline2);
|
}
|
|
|
|
CString wintext;
|
GetWindowText(wintext);
|
|
|
memdc.SetBkMode(TRANSPARENT);
|
memdc.DrawText(wintext,CRect(0,0,rect.right, rect.bottom), m_nFormat);
|
|
|
//memdc.SelectObject(pOldFont);
|
}
|
|
|
BOOL CakStaticText::OnEraseBkgnd(CDC* pDC)
|
{
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
|
return true;
|
return CStatic::OnEraseBkgnd(pDC);
|
}
|
|
|
HBRUSH CakStaticText::CtlColor(CDC* pDC, UINT nCtlColor)
|
{
|
if(m_bFastMode == true)
|
{
|
return NULL;
|
}
|
pDC->SetTextColor(m_textcolor);
|
pDC->SetBkColor(m_backcolor);
|
|
|
if(m_bColorUpdate == true)
|
{
|
m_brush.DeleteObject();
|
m_brush.CreateSolidBrush(m_backcolor);
|
|
|
m_bColorUpdate = false;
|
}
|
|
|
return (HBRUSH)m_brush;
|
}
|
|
|
|
void CakStaticText::setColor(COLORREF textcolor,COLORREF backcolor)
|
{
|
m_backcolor = backcolor;
|
m_textcolor = textcolor;
|
|
m_bColorUpdate = true;
|
//m_brush.CreateSolidBrush(m_backcolor);
|
Invalidate(FALSE);
|
}
|
|
void CakStaticText::setTextColor(COLORREF textcolor)
|
{
|
if(m_textcolor != textcolor)
|
{
|
m_bColorUpdate = true;
|
}
|
m_textcolor = textcolor;
|
|
Invalidate(FALSE);
|
}
|
|
void CakStaticText::setBkColor(COLORREF backcolor)
|
{
|
if(m_backcolor != backcolor)
|
{
|
m_bColorUpdate = true;
|
}
|
|
m_backcolor = backcolor;
|
|
|
Invalidate(FALSE);
|
|
}
|
|
void CakStaticText::setOutLine( BOOL bFlag, COLORREF color )
|
{
|
if(m_nDrawOutline != m_nDrawOutline)
|
{
|
m_nDrawOutline = bFlag;
|
}
|
|
m_clrOutline = color;
|
m_clrOutline2 = RGB(GetRValue(color)/2, GetGValue(color)/2, GetBValue(color)/2);
|
|
Invalidate(FALSE);
|
}
|
|
void CakStaticText::setFont(char* fontName)
|
{
|
LOGFONT lf;
|
CFont* pfont = GetFont();
|
pfont->GetLogFont(&lf);
|
|
strcpy((char*)lf.lfFaceName, fontName); // font setting
|
|
m_font.DeleteObject();
|
m_font.CreateFontIndirect(&lf);
|
|
SetFont(&m_font);
|
}
|
void CakStaticText::setFontSize(int size)
|
{
|
LOGFONT lf;
|
CFont* pfont = GetFont();
|
pfont->GetLogFont(&lf);
|
|
lf.lfHeight = -size;
|
|
m_font.DeleteObject();
|
m_font.CreateFontIndirect(&lf);
|
|
SetFont(&m_font);
|
}
|
|
void CakStaticText::SetAlign(UINT format)
|
{
|
m_nFormat = format;
|
|
}
|