// MyDateTimeCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "aplguiex.h"

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

/////////////////////////////////////////////////////////////////////////////
// CaplLB_DateTimeCtrl
IMPLEMENT_DYNAMIC(CaplLB_DateTimeCtrl, CDateTimeCtrl)

CaplLB_DateTimeCtrl::CaplLB_DateTimeCtrl()
{
}

CaplLB_DateTimeCtrl::~CaplLB_DateTimeCtrl()
{
}


BEGIN_MESSAGE_MAP(CaplLB_DateTimeCtrl, CDateTimeCtrl)
	//{{AFX_MSG_MAP(CaplLB_DateTimeCtrl)
	ON_CONTROL_REFLECT(EN_KILLFOCUS, OnKillfocus)
	ON_NOTIFY_REFLECT(DTN_DROPDOWN, OnDropDown)
	ON_NOTIFY_REFLECT(DTN_CLOSEUP, OnCloseUp)
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CaplLB_DateTimeCtrl message handlers
void CaplLB_DateTimeCtrl::OnKillfocus() 
{
	CWnd* parent = GetParent();
	if (parent)
		parent->SetFocus();	
}

void CaplLB_DateTimeCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
	CPoint pt(point);
	CRect rect;
	GetWindowRect(rect);
	ClientToScreen(&pt);
	if(!rect.PtInRect(pt))
	{
		CaplListCtrl *pList = (CaplListCtrl*)GetParent();
		if(pList)
		{
			if(::IsWindow(pList->m_hWnd))
			{
				if(pList->EndEdit() && !pList->m_sErrorText.IsEmpty())
				{
					SetCapture();
					return;
				}
				ReleaseCapture();
			}
		}
	}
	else
		CDateTimeCtrl::OnLButtonDown(nFlags, point);
}

void CaplLB_DateTimeCtrl::OnDropDown(NMHDR* pNMHDR, LRESULT* pResult)
{
	ReleaseCapture();
}

void CaplLB_DateTimeCtrl::OnCloseUp(NMHDR* pNMHDR, LRESULT* pResult)
{
	SetFocus();
	SetCapture();
}