#include "StdAfx.h" #include "MouseToolMeasure.h" #include "GlobalFunction.h" #include "CommandMove.h" #include "GlobalDrawMgr.h" #include "LogMgr.h" #include "DrawSimpleShape.h" CMouseToolMeasure::CMouseToolMeasure(void) { //标签栏-------------------------start GetFrame()->ResetCaptionBar(); GetFrame()->SetCaptionCmdStr(CMD_TOOL_MEASURE_FIRST_PT); GetFrame()->RefreashCaptionBar(); //标签栏-------------------------end } CMouseToolMeasure::~CMouseToolMeasure(void) { } void CMouseToolMeasure::OperateOver() { //标签栏-------------------------start GetFrame()->ResetCaptionBar(); //标签栏-------------------------end CMouseTool::OperateOver(); m_Status = _STATUS_END; } void CMouseToolMeasure::OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc) { Dbxy pt = gDraw->CPoint2Dbxy(point); if(m_Status==_STATUS_1) { SaveDownPoint(point); //------------------------------------日志start CString val1; val1.Format("%lf",pt.x); CString val2; val2.Format("%lf",pt.y); gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_FIRST_PT,STR_NULL,STR_NULL,pt.x,pt.y); //------------------------------------日志end //标签栏-------------------------start GetFrame()->ResetCaptionBar(); GetFrame()->SetCaptionCmdStr(CMD_TOOL_MEASURE_SECOND_PT); GetFrame()->RefreashCaptionBar(); //标签栏-------------------------end ToNextStatus(); } else { //------------------------------------日志start { CString val1; val1.Format("%lf",pt.x); CString val2; val2.Format("%lf",pt.y); gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_SECOND_PT,STR_NULL,STR_NULL,pt.x,pt.y); } { //计算距离 m_Dis = CalDistance(m_DownPoint,pt); gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT,STR_NULL,m_Dis); } { gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT2,STR_NULL,STR_NULL,pt.x-m_DownPoint.x,pt.y-m_DownPoint.y); } //计算角度 { double Ang = Cal360AngleByTwoPt(pt,m_DownPoint); gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT3,STR_NULL,Ang); } //两个点和(0,0)点的夹角 { double Ang = Cal360AngleByTwoPt(pt,Dbxy(0,0)); gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT4,STR_NULL,Ang); } { double Ang = Cal360AngleByTwoPt(m_DownPoint,Dbxy(0,0)); gLogMgr->WriteDebugLog(CMD_TOOL_MEASURE_RESULT4,STR_NULL,Ang); } //------------------------------------日志end ClearFirstPoint(); m_Status = _STATUS_1; } } void CMouseToolMeasure::OnLButtonUp(UINT nFlags, CPoint point,CClientDC &dc) { } void CMouseToolMeasure::OnMouseMove(UINT nFlags, CPoint point,CClientDC &dc) { Dbxy OldPt = gDraw->CPoint2Dbxy(m_PreMovePt); Dbxy CurPt = gDraw->CPoint2Dbxy(point); CLayer &layer = gLayer; if(m_Status!=_STATUS_1) { if(HasPreMovePt())//擦除之前的线 { XorDrawLine(&dc,gDraw->GetMeasurePen(),m_DownPoint,OldPt); } XorDrawLine(&dc,gDraw->GetMeasurePen(),m_DownPoint,CurPt); //计算距离 m_Dis = CalDistance(m_DownPoint,CurPt); //状态栏-----------------------------start CString str1 = "测量[距离]"; CString str2; str2.Format("%lf",m_Dis); GetFrame()->ResetStatusBarExtStr(); GetFrame()->SetStatusBarExtStr(str1,str2,STR_NULL); //状态栏-----------------------------end SavePreMovePt(point); } } void CMouseToolMeasure::OnEscapeKey() { if(m_Status!=_STATUS_1)//第二次点 { OperateOver(); } }