#include "StdAfx.h" //#include "DrawApp.h" #include "ItemBase.h" #include "SectionDoc.h" #include "SigmaDoc.h" #include "SigmaView.h" //#include "DrawDoc.h" //#include "DrawView.h" //#include "DrawChildFrame.h" //#include "DrawMainFrame.h" namespace NDrawView { CItemBase::CItemBase(CSigmaDoc * ppDoc) : m_bPopupRightMenu(TRUE) , m_bEnableRButtonCancel(FALSE) { m_type=0; m_pDoc = ppDoc; m_hdc = 0; m_pScreenDC = nullptr; } CItemBase::~CItemBase(void) { m_pDoc=NULL; m_type=0; } void CItemBase::OnLButtonDblClk(UINT nFlags, CPoint point) { } void CItemBase::OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) { } void CItemBase::OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk) { } int CItemBase::OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) { return 1; } void CItemBase::OnMouseMoveStatus(CDC *pDC, UINT nFlags, CPoint point, BYTE*& destBuffer, int& destLen) { } void CItemBase::OnRButtonDblClk(UINT nFlags, CPoint point) { } void CItemBase::OnRButtonDown(UINT nFlags, CPoint point) { //if(m_bEnableRButtonCancel) // GetDrawDoc()->EnableDefaultTool(); } BOOL CItemBase::OnRButtonUp(UINT nFlags, CPoint point) { return TRUE; } void CItemBase::OnMouseWheel(uint32_t button, int32_t clicks, int32_t x, int32_t y, int32_t delta) { } void CItemBase::DrawAssistant(CDC * pDC, int mouseX, int mouseY) { } int CItemBase::GetSubMenu() { return -1; } void CItemBase::OnDraw(CXyDC* pDC) { } void CItemBase::OnDraw(CXyDC* pXyDC, CDC* pDC) { } BOOL CItemBase::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { return FALSE; } BOOL CItemBase::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { switch(nChar) { case VK_ESCAPE: //GetDrawDoc()->EnableDefaultTool(); return TRUE; default: break; } return FALSE; } long CItemBase::GetType(void) { //if(position) //{ // return GetDrawDoc()->GetDraw()->GetElementType(position); //} return m_type; } void CItemBase::SetDoc(CSigmaDoc * ppDoc) { m_pDoc = ppDoc; } CSigmaDoc * CItemBase::GetDrawDoc() { return m_pDoc; } BOOL CItemBase::IsCaptureState(void) { //if(GetDrawView()->GetCapture() != GetDrawView()) return FALSE; return TRUE; } CSigmaView * CItemBase::GetDrawView(void) { ASSERT(GetDrawDoc()!=NULL); if(GetDrawDoc()==NULL) return NULL; return m_pDoc->GetView(); //return m_pView; } CDC* CItemBase::GetScreenDC() { //if (m_pDoc == NULL) // return NULL; //CSigmaView * pView = (CSigmaView *)m_pDoc->GetView(); //if (pView != 0) //{ // return pView->GetScreenDC(); //} return m_pScreenDC; } void CItemBase::SetScreenDC(CDC* pScreenDC) { m_pScreenDC = pScreenDC; } CDC* CItemBase::GetImgDC() { if (m_pDoc == NULL) return NULL; CSigmaView * pView = (CSigmaView *)m_pDoc->GetView(); if (pView != 0) { return pView->GetImgDC(); } return nullptr; } CXyDC* CItemBase::GetDC(void) const { if (m_pDoc == NULL) return NULL; //CSigmaView * pView = (CSigmaView *)m_pDoc->GetView(); //if (pView != 0) //{ // CDC * cdc = pView->GetDrawDC(); // if (cdc != 0) // m_pDoc->GetDC().Create(cdc); //} return &m_pDoc->GetDC();// m_xyDC; /* IDoc * pDoc = GetDrawDoc(); ASSERT(pDoc!=NULL); if(pDoc==NULL) return NULL; return &((CSigmaDoc*)(m_pDoc))->m_xyDC; return nullptr; */ } void CItemBase::SetType(long type) { m_type = type; } BOOL CItemBase::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { return FALSE; } dfPoint CItemBase::GetReal(CPoint point) { dfPoint dp; dp.x0=GetDC()->GetRX(point.x); dp.y0=GetDC()->GetRY(point.y); return dp; } void CItemBase::SetStatusBarLengthInfo(double x1, double y1, double x2, double y2, BYTE*& destBuffer, int& destLen) { CString format; //format.LoadString(IDS_STRING_LENGTH);//³€ΆΘ=%lf format = "³€ΆΘ=%lf"; double dis=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); info.Format(format,dis); double angle=AfxGetPublicFunction()->GetAngle(x1,y1,x2,y2); if(angle<0) angle+=360; CString str; str.Format("; Angle=%lf", angle); info = info + str; destLen = info.GetLength(); CMemFile mf(destLen); mf.Write(info, destLen); destBuffer = mf.Detach(); } //BOOL CItemBase::InitPropertyGrid(CXTPPropertyGrid& grid) //{ // return TRUE; //} //BOOL CItemBase::OnGridItemChangeValue(CXTPPropertyGridItem* pItem) //{ // return FALSE; //} // //void CItemBase::OnInplaceButtonDown(CXTPPropertyGridItem* pItem) //{ //} CPoint2D CItemBase::CenterPoint(void) { CPoint2D pt(0,0); if (m_pDoc == NULL) return pt; CSigmaView* pView =(CSigmaView*)m_pDoc->GetView(); if(pView) { //CPoint p= pView->m_client.CenterPoint(); //pt=GetDC()->GetReal(p); pt = pView->m_client.CenterPoint(); pt = GetDC()->GetReal(pt); } return pt; } void CItemBase::InvalidateRect(CRect8 rect) { CRect rt=GetDC()->GetScreen(rect); rt.NormalizeRect(); rt.InflateRect(2,2); //GetDrawDoc()->Invalidate(&rt); } CString CItemBase::GetFloatFormatString(BOOL bIsE) { CString strFormat; //strFormat.Format("%%0.%dlf",pf.GetDecimalDigits()); if(!bIsE) strFormat.Format("%%0.%dlf",8); else strFormat.Format("%%0.%dE",8); return strFormat; } void CItemBase::OnOK(void) { } void CItemBase::OnCancel(void) { } void CItemBase::SetHDC(HDC hdc) { m_hdc = hdc; } BOOL CItemBase::IsPopupRightMenu(void) { return m_bPopupRightMenu; } void CItemBase::EnablePopupRightMenu(BOOL bPopup) { m_bPopupRightMenu=bPopup; } void CItemBase::EnableRButtonCancel(BOOL bEnable) { m_bEnableRButtonCancel=bEnable; } void CItemBase::DrawCrossPoint(CXyDC* pDC, double x, double y) { CPen pen, *pOldPen; pen.CreatePen(PS_SOLID, 1, RGB(0,0,0)); pOldPen=pDC->GetDC()->SelectObject(&pen); int od=pDC->GetDC()->SetROP2(R2_NOTXORPEN); int off=8; CPoint pt=pDC->GetScreen(x,y); pDC->GetDC()->MoveTo(pt.x-off, pt.y); pDC->GetDC()->LineTo(pt.x+off, pt.y); pDC->GetDC()->MoveTo(pt.x, pt.y-off); pDC->GetDC()->LineTo(pt.x, pt.y+off); pDC->GetDC()->SetROP2(od); pDC->GetDC()->SelectObject(pOldPen); } void CItemBase::DrawLineReal(double x1, double y1, double x2, double y2) { int od = GetDC()->GetDC()->SetROP2(R2_NOTXORPEN); GetDC()->MoveTo(x1, y1); GetDC()->LineTo(x2, y2); GetDC()->GetDC()->SetROP2(od); } void CItemBase::DrawLineScreen(int x1, int y1, int x2, int y2) { POINT ptOld; HDC hdc = m_pScreenDC->m_hDC; int od= m_pScreenDC->SetROP2(R2_NOTXORPEN); ::MoveToEx(hdc, x1, y1, &ptOld); ::LineTo(hdc, x2,y2); m_pScreenDC->SetROP2(od); } CRect CItemBase::GetNegativeRect(CRect* pRect) { CRect rt=*pRect; rt.bottom=min(pRect->top, pRect->bottom); rt.top=max(pRect->top, pRect->bottom); rt.right=min(pRect->left, pRect->right); rt.left=max(pRect->left, pRect->right); return rt; } //CTreePropertySheet& CItemBase::GetPreferences(void) //{ // CDrawMainFrame* pmf = (CDrawMainFrame*)GetDrawDoc()->GetMainFrame(); // return pmf->GetDrawFrame().GetPreferences(); //} }//namesapce