pickerbutton.cpp

来自「SQLBig5BugTool 宽字符操作问题」· C++ 代码 · 共 153 行

CPP
153
字号
// PickerButton.cpp : implementation file
//

#include "stdafx.h"
#include "PickerButton.h"
#include "UISupport.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPickerButton

CPickerButton::CPickerButton(LPCTSTR lpCursorName ):
m_lpCursorName(lpCursorName)
{
	m_IMousePicker = 0;
	
	m_bIsPickerStarted = false;

	m_hWndLast = 0;

	m_bEnableDrawFrame = TRUE;
}

CPickerButton::~CPickerButton()
{
}


BEGIN_MESSAGE_MAP(CPickerButton, CButton)
//{{AFX_MSG_MAP(CPickerButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPickerButton message handlers


void CPickerButton::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	try
	{
		if(m_IMousePicker)
		{
			m_IMousePicker->OnPickerStart(nFlags,point);
			
			SetCursor(LoadCursor(AfxGetInstanceHandle(),m_lpCursorName));
			SetCapture();

		}
	}
	catch(...)
	{
		TRACE("CPickerButton::OnLButtonDown exception encountered!");
	}
	
	m_bIsPickerStarted = true;
	
	CButton::OnLButtonDown(nFlags, point);
}

void CPickerButton::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	try
	{
		if(m_IMousePicker)
		{
			m_IMousePicker->OnPickerStop(nFlags,point);
			
			SetCursor(NULL);
			ReleaseCapture();

			EraseLastWindowFrame();
			
		}
	}
	catch(...)
	{
		TRACE("CPickerButton::OnLButtonUp exception encountered!");
	}
	
	m_bIsPickerStarted = false;
	
	CButton::OnLButtonUp(nFlags, point);
}


void CPickerButton::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	try
	{
		
		if(m_bIsPickerStarted)
		{
			if(m_IMousePicker)
			{
				HWND hWndUnderCursor=CUISupport::GetCurrentWndUnderCursor();
				
				m_IMousePicker->OnPickerMouseMove(nFlags,point);				
		
				m_hWndLast=hWndUnderCursor;
			}
		}
	}
	catch(...)
	{
		TRACE("CPickerButton::OnMouseMove exception encountered!");
	}
	
	CButton::OnMouseMove(nFlags, point);
}

void CPickerButton::SetMousePicker(IMousePicker *pMousePicker)
{
	m_IMousePicker = pMousePicker;
}

bool CPickerButton::IsPickerStarted()
{
	return m_bIsPickerStarted;
}

void CPickerButton::EraseLastWindowFrame()
{
	if(!m_bEnableDrawFrame)
	{
		return ;
	}

	if(!IsWindow(m_hWndLast))
	{
		return ;
	};
	
	CUISupport::RedrawWindowFrame(m_hWndLast);
	m_hWndLast = 0;
}

void CPickerButton::EnableDrawFrame(const BOOL bEnableDrawFrame)
{
	m_bEnableDrawFrame = bEnableDrawFrame ;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?