www.gusucode.com > VC++自定义图表控件及使用例子源码程序 > VC++自定义图表控件及使用例子源码程序\code\ChartCtrl_source\ChartCrossHairCursor.cpp

    //Download by http://www.NewXing.com
/*
 *
 *	ChartCrossHairCursor.cpp
 *
 *	Written by C閐ric Moonen (cedric_moonen@hotmail.com)
 *
 *
 *
 *	This code may be used for any non-commercial and commercial purposes in a compiled form.
 *	The code may be redistributed as long as it remains unmodified and providing that the 
 *	author name and this disclaimer remain intact. The sources can be modified WITH the author 
 *	consent only.
 *	
 *	This code is provided without any garanties. I cannot be held responsible for the damage or
 *	the loss of time it causes. Use it at your own risks
 *
 *	An e-mail to notify me that you are using this code is appreciated also.
 *
 *
 */

#include "stdafx.h"
#include "ChartCrossHairCursor.h"
#include "ChartCtrl.h"

CChartCrossHairCursor::CChartCrossHairCursor(CChartCtrl* pParent,
											 CChartAxis* pHorizAxis, 
											 CChartAxis* pVertAxis)
  : CChartCursor(pParent), m_pHorizontalAxis(pHorizAxis), m_pVerticalAxis(pVertAxis),
    m_lXPos(0), m_lYPos(0)
{
}

CChartCrossHairCursor::~CChartCrossHairCursor()
{
}

void CChartCrossHairCursor::Draw(CDC* pDC)
{
	CPen NewPen(PS_SOLID,1,m_colCursor);
	CPen* pOldPen = pDC->SelectObject(&NewPen);

	CRect plottingRect = m_pParentCtrl->GetPlottingRect();

	pDC->MoveTo(m_lXPos, plottingRect.top);
	pDC->LineTo(m_lXPos, plottingRect.bottom);
	pDC->MoveTo(plottingRect.left, m_lYPos);
	pDC->LineTo(plottingRect.right, m_lYPos);

	pDC->SelectObject(pOldPen);
	NewPen.DeleteObject();
}

void CChartCrossHairCursor::OnMouseMove(CPoint mousePoint)
{
	m_lXPos = mousePoint.x;
	m_lYPos = mousePoint.y;

	double XVal = m_pHorizontalAxis->ScreenToValue(m_lXPos);
	double YVal = m_pVerticalAxis->ScreenToValue(m_lYPos);
	CursorMoved(XVal, YVal);
}