
#include "stdafx.h"
#include "SkinStatic.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSkinStatic

CSkinStatic::CSkinStatic()
{
	m_nX=0;
	m_nY=0;
	m_strText="";
	m_pFont = NULL;
	//m_pFont.CreateFont(
	//	15,                        // nHeight
	//	0,                         // nWidth
	//	0,                         // nEscapement
	//	0,                         // nOrientation
	//	FW_BOLD,                 // nWeight
	//	FALSE,                     // bItalic
	//	FALSE,                     // bUnderline
	//	0,                         // cStrikeOut
	//	ANSI_CHARSET,              // nCharSet
	//	OUT_DEFAULT_PRECIS,        // nOutPrecision
	//	CLIP_DEFAULT_PRECIS,       // nClipPrecision
	//	DEFAULT_QUALITY,           // nQuality
	//	DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
	//	_T("Arial"));                 // lpszFacename
}

CSkinStatic::~CSkinStatic()
{
}


BEGIN_MESSAGE_MAP(CSkinStatic, CStatic)
	//{{AFX_MSG_MAP(CSkinStatic)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSkinStatic message handlers
void CSkinStatic::LoadBitmap(LPCTSTR szImagePath)
{
	m_bmpStatic.LoadImage(szImagePath); 
}

void CSkinStatic::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CRect rcClient;
	GetClientRect(&rcClient);
	if (m_bmpStatic.m_hObject !=0)
		m_bmpStatic.ExtendDraw(&dc,rcClient,m_nX,m_nY); 

	CRect rc = rcClient;
	rc.left = m_nTextStart;
	DrawText(&dc, rc, m_strText);
}

BOOL CSkinStatic::OnCommand(WPARAM wParam, LPARAM lParam) 
{
	GetParent()->SendMessage(WM_COMMAND,wParam,lParam); 	
	return CStatic::OnCommand(wParam, lParam);
}

void CSkinStatic::SetText(CString strText, int nStart, COLORREF cr)
{
	m_strText = strText;
	m_nTextStart = nStart;
	m_crText = cr;
	Invalidate();
}

BOOL CSkinStatic::DrawText(CDC *pDC,CRect rc ,CString strText)
{
	CRect r;
	CString str;
	CRect rcButton;
	if (strText.GetLength() )
	{
		if(m_pFont == NULL)
			m_pFont = GetParent()->GetFont();

		pDC->SelectObject(m_pFont);
		pDC->SetTextColor(m_crText);
		pDC->SetBkMode(TRANSPARENT);
		pDC->DrawText( strText, rc, DT_SINGLELINE | DT_VCENTER );
	}

	return TRUE;
}

void CSkinStatic::Redraw(CDC *pDC)
{
	CRect rc = GetRectInParent();
	if (m_bmpStatic.m_hObject !=0)
		m_bmpStatic.ExtendDraw(pDC,rc,m_nX,m_nY); 
	CRect rcText = rc;
	rcText.left += m_nTextStart;
	DrawText(pDC,rcText,m_strText);
}

CRect CSkinStatic::GetRectInParent()
{
	CRect rcWindowParent;
	GetParent()->GetWindowRect(rcWindowParent);//client
	CRect rcWindow;
	GetWindowRect(&rcWindow);
	CRect rect;
	rect.left = rcWindow.left-rcWindowParent.left;
	rect.top = rcWindow.top-rcWindowParent.top;
	rect.right = rcWindow.right-rcWindowParent.left;
	rect.bottom = rcWindow.bottom-rcWindowParent.top;

	return rect;
}