// IndicButton.cpp : implementation file
//

#include "stdafx.h"
#include "EPro.h"
#include "IndicButton.h"

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

/////////////////////////////////////////////////////////////////////////////
// CIndicButton

CIndicButton::CIndicButton()
{
	m_bUse=TRUE;
	m_bEnAuto=FALSE;
}

CIndicButton::~CIndicButton()
{
}


BEGIN_MESSAGE_MAP(CIndicButton, CXTButton)
	//{{AFX_MSG_MAP(CIndicButton)
	ON_WM_RBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIndicButton message handlers

void CIndicButton::InitButton(CWnd* pWnd,BOOL bEnAuto,BOOL bIndicator,
					          UINT idStaticIco,UINT idRunIco)
{
	m_bEnAuto=bEnAuto;//是否允许自动
	m_bIndicator=bIndicator;//是否允许表示状态(正在进行操作和等待操作)
	m_idRunIco=idRunIco;//idRunIco=0表示没图标
	m_idStaticIco=idStaticIco;//同上
	SetFont(pWnd->GetFont());//纠正XT的字体问题
	memcpy(&xtAfxData.font, pWnd->GetFont(),sizeof(CFont));
	SetXButtonStyle(BS_XT_XPFLAT| BS_RIGHT);//设置XP风格
	GetWindowText(m_strOldFace);//得到文本标题
	if(bEnAuto)
	{
		m_strAutoFace="(自动)"+m_strOldFace;//在标题前加“(自动)”
		m_clrOld=GetColorFace();
	}
	if(bIndicator)
	{
		SetIndicator(FALSE);//设置等待操作时的图标
	}
	else if(idStaticIco!=0)
	{
		SetIcon(CSize(32,32),idStaticIco);
	}


}

void CIndicButton::SetIndicator(BOOL bRunning)
{
	m_bRunning=bRunning;
	if(bRunning)//表示有操作正在进行
	{
		if(m_idRunIco!=0)//用图标表示相应的操作正在进行
		{
			SetIcon(CSize(32,32),m_idRunIco);
		}
				
	}
	else
	{
		if(m_idStaticIco!=0)
		{
			SetIcon(CSize(32,32),m_idStaticIco);
		}
	}

}

void CIndicButton::OnRButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//鼠标右键点击设置自动
	if(m_bEnAuto)
	{
		if(m_bAuto)
		{
			EnableAuto(FALSE);//取消自动
		}
		else
		{
			EnableAuto(TRUE);//设置自动
		}
	}
	CXTButton::OnRButtonUp(nFlags, point);
}

void CIndicButton::EnableAuto(BOOL bAuto)
{
	m_bAuto=bAuto;
		if(bAuto)
		{
			m_bAuto=TRUE;
			SetWindowText(m_strAutoFace);
			SetColorFace(m_clrOld+0x000f0f0f);
		}
		else
		{
			m_bAuto=FALSE;
			SetWindowText(m_strOldFace);
			SetColorFace(m_clrOld);
		}
}
