// ColorButton.cpp : implementation file
//

#include "precompiled.h"
#include "stdafx.h"
#include "ScEd.h"
#include "ColorButton.h"


/////////////////////////////////////////////////////////////////////////////
// CColorButton

CColorButton::CColorButton() : m_Color(0)
{
}

CColorButton::~CColorButton()
{
}


BEGIN_MESSAGE_MAP(CColorButton, CButton)
	//{{AFX_MSG_MAP(CColorButton)
	ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CColorButton message handlers

void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	CDC* pDC   = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRect rect = lpDrawItemStruct->rcItem;

    // draw button edges 
	pDC->DrawFrameControl(rect, DFC_BUTTON,DFCS_BUTTONPUSH | DFCS_FLAT );

    // deflate the drawing rect by the size of the button's edges
    rect.DeflateRect( CSize(GetSystemMetrics(SM_CXEDGE), GetSystemMetrics(SM_CYEDGE)));
    
    // fill the interior color 
	pDC->FillSolidRect(rect,m_Color); 
}


void CColorButton::OnClicked() 
{
	CColorDialog dlg;
	if (dlg.DoModal()==IDOK) {
		// store color in button
		m_Color=dlg.m_cc.rgbResult;
		// force redraw
		Invalidate();
		UpdateWindow();
	}	
}
