⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visdrawview.cpp

📁 参数化车间设备资源绘制程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
}



void CVisDrawView::OnEditPaste()
{
	// TODO: 在此添加命令处理程序代码
	COleDataObject dataObject;
	dataObject.AttachClipboard();

	// invalidate current selection since it will be deselected
	OnUpdate(NULL, HINT_UPDATE_SELECTION, NULL);
	m_selection.RemoveAll();
	
	if (dataObject.IsDataAvailable(m_cfDraw))
	{
		PasteNative(dataObject);

		// now add all items in m_selection to document
		POSITION pos = m_selection.GetHeadPosition();
		while (pos != NULL)
			GetDocument()->Add(m_selection.GetNext(pos));
	}
//	else
//		PasteEmbedded(dataObject, GetInitialPosition().TopLeft() );

	GetDocument()->SetModifiedFlag();

	// invalidate new pasted stuff
	GetDocument()->UpdateAllViews(NULL, HINT_UPDATE_SELECTION, &m_selection);

}

void CVisDrawView::OnUpdateEditPaste(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	COleDataObject dataObject;
  m_bEnable = dataObject.AttachClipboard() &&
		(dataObject.IsDataAvailable(m_cfDraw) ||
		 COleClientItem::CanCreateFromData(&dataObject));

	// enable command based on availability
	pCmdUI->Enable(m_bEnable);

}
void CVisDrawView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
	switch (lHint)
	{
	case HINT_UPDATE_WINDOW:    // redraw entire window
		Invalidate(FALSE);
		break;

	case HINT_UPDATE_DRAWOBJ:   // a single object has changed
		InvalObj((CFigureObj*)pHint);
		break;

	case HINT_UPDATE_SELECTION: // an entire selection has changed
		{
			CFigureObjList* pList = pHint != NULL ?
				(CFigureObjList*)pHint : &m_selection;
			POSITION pos = pList->GetHeadPosition();
			while (pos != NULL)
				InvalObj(pList->GetNext(pos));
		}
		break;

	case HINT_DELETE_SELECTION: // an entire selection has been removed
		if (pHint != &m_selection)
		{
			CFigureObjList* pList = (CFigureObjList*)pHint;
			POSITION pos = pList->GetHeadPosition();
		while (pos != NULL)
			{
				CFigureObj* pObj = pList->GetNext(pos);
				InvalObj(pObj);
		//		Remove(pObj);   // remove it from this view's selection
			}
		}
		break;
	

	default:
		ASSERT(FALSE);
		break;
	}
}

void CVisDrawView::OnEditDelete()
{
	// TODO: 在此添加命令处理程序代码
	GetDocument()->UpdateAllViews(NULL, HINT_DELETE_SELECTION, &m_selection);
	OnUpdate(NULL, HINT_UPDATE_SELECTION, NULL);

	// now remove the selection from the document
	POSITION pos = m_selection.GetHeadPosition();
	while (pos != NULL)
	{
		CFigureObj* pObj = m_selection.GetNext(pos);
		GetDocument()->Remove(pObj);
	pObj->Remove();
	}
	m_selection.RemoveAll();
	m_deletepic=1;
}

void CVisDrawView::OnUpdateEditDelete(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->Enable(!m_selection.IsEmpty());
}


void CVisDrawView::OnEditSelectall()
{
	// TODO: 在此添加命令处理程序代码
	CFigureObjList* pObList = GetDocument()->GetObjects();
	POSITION pos = pObList->GetHeadPosition();
	while (pos != NULL)
		Select(pObList->GetNext(pos), TRUE);
}

void CVisDrawView::OnUpdateEditSelectall(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->Enable(GetDocument()->GetObjects()->GetCount() != 0);
}

void CVisDrawView::OnEditCut()
{
	// TODO: 在此添加命令处理程序代码
	OnEditCopy();
	OnEditDelete();
//CClientDC ht(this);
//CVisDrawDoc* pDoc=GetDocument();
//short nGraphCut;
//nGraphCut=0;


}

void CVisDrawView::OnUpdateEditCut(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->Enable(!m_selection.IsEmpty());
}

	void CVisDrawView::OnContextMenu(CWnd* pWnd, CPoint point)
{
	// TODO: 在此处添加消息处理程序代码
	GetParentFrame()->ActivateFrame();

	CPoint local = point;
	ScreenToClient(&local);
	ClientToDoc(local);

	CFigureObj* pObj;
	pObj = GetDocument()->ObjectAt(this,local);
	if(pObj!= NULL)
	{
	    if(!IsSelected(pObj))
			Select( pObj, FALSE );			// reselect item if appropriate
		UpdateWindow();

		CMenu menu;
		if (menu.LoadMenu(IDR_POPUP_MENU))
		{
			CMenu* pPopup = menu.GetSubMenu(0);
			ASSERT(pPopup != NULL);

			pPopup->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,
								   point.x, point.y,
								   AfxGetMainWnd()); // route commands through main window
		}
	}

}



void CVisDrawView::OnUpdateDrawLine(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == lineTool);
}

void CVisDrawView::OnUpdateDrawPoint(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == pointTool);
}

void CVisDrawView::OnUpdateDrawSec(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == secarcTool);
}


void CVisDrawView::OnUpdateDrawCse(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == csearcTool);
}



void CVisDrawView::OnUpdateDrawPolyline(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == polylineTool);
}

void CVisDrawView::OnUpdateDrawRectangle(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == rectTool);
}

void CVisDrawView::OnUpdateDrawCircle(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == circleTool);
}

void CVisDrawView::OnUpdateDrawPolygon(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == polygonTool);
}

void CVisDrawView::OnUpdateDrawHorizen(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == hlineTool);
}

void CVisDrawView::OnUpdateDrawVertical(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
		pCmdUI->SetRadio(CDrawTool::c_drawShape == vlineTool);
}

void CVisDrawView::OnUpdateDrawSelection(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == selectTool);
}

void CVisDrawView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
	ASSERT_VALID(pDC);

	PrintHeader(pDC,pInfo);

	pDC->SetWindowOrg(pInfo->m_rectDraw.left,-pInfo->m_rectDraw.top);
	CVisDrawScrollView::OnPrint(pDC, pInfo);

	PrintFooter(pDC,pInfo);
}

void CVisDrawView::PrintHeader(CDC* pDC, CPrintInfo* pInfo)
{
	pDC->SetTextAlign(TA_LEFT);

	pDC->TextOut(pInfo->m_rectDraw.left,-25,m_strDrawing);

	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);

	int y = -35 - tm.tmHeight;

	pDC->MoveTo(0,y);

	pDC->LineTo(pInfo->m_rectDraw.right,y);

	y -= 25;
	pInfo->m_rectDraw.top += y;
}

void CVisDrawView::PrintFooter(CDC* pDC, CPrintInfo* pInfo)
{
	CVisDrawDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	
	const int LINE_WIDTH = 75;
	CString strFooter = pDoc->GetPathName();
	CString strTitle = pDoc->GetTitle();
	int nLength = strFooter.GetLength();
	if(nLength > LINE_WIDTH||strTitle == "Untitled")
		strFooter = strTitle;

	CString strPage;
	strPage.Format("%d",pInfo->m_nCurPage);
	strFooter = strFooter+" "+strPage;

    pDC->SetTextAlign(TA_LEFT);

	pDC->TextOut(pInfo->m_rectDraw.left,pInfo->m_rectDraw.bottom + 100, strFooter);

	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);

	int y = pInfo->m_rectDraw.bottom + 90 + tm.tmHeight;

	pDC->MoveTo(0,y);

	pDC->LineTo(pInfo->m_rectDraw.right,y);

	
}


//void CVisDrawView::OnChe()
//{
	// TODO: 在此添加命令处理程序代码
	
//}

//void CVisDrawView::OnUpdateChe(CCmdUI *pCmdUI)
//{
	// TODO: 在此添加命令更新用户界面处理程序代码
//}

/*void CVisDrawView::OnChe()
{
	// TODO: 在此添加命令处理程序代码
	m_picID=IDB_CHE;
	//m_type=1;
	InvalidateRect(NULL);
}

void CVisDrawView::OnOpenBmp()
{
	// TODO: 在此添加命令处理程序代码
	char szFilters[]="图标文件(*.bmp)|*.bmp|所有文件(*.*)|*.*||";
	CFileDialog m_dlg(TRUE,"bmp","*.bmp",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters,this);
	if(m_dlg.DoModal()==IDOK)
	{
		m_picPath=m_dlg.GetPathName();
		CString fileName=m_dlg.GetFileTitle();
		SetWindowText(fileName);
		//m_type=1;
		InvalidateRect(NULL);
	}
}*/

void CVisDrawView::OnBao()
{
	// TODO: 在此添加命令处理程序代码
	//m_picID=IDB_BAO;
	//m_type=3;
	//InvalidateRect(NULL);
	m_picIDbao=IDB_BAO;
	CDrawTool::c_drawShape =baoTool;
	CFigureObj::c_drawObj =baoObj;
}

//void CVisDrawView::OnChe()
//{
//	// TODO: 在此添加命令处理程序代码
//	
//	//m_type=1;
//	//InvalidateRect(NULL);
//	//CDrawTool::c_drawShape =cheTool;
//
//}

void CVisDrawView::OnChong()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDchong=IDB_CHONG;
	CDrawTool::c_drawShape =chongTool;
	CFigureObj::c_drawObj =chongObj;
}

void CVisDrawView::OnJu()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDju=IDB_JU;
	CDrawTool::c_drawShape =juTool;
	CFigureObj::c_drawObj =juObj;
}

void CVisDrawView::OnMo()
{

	// TODO: 在此添加命令处理程序代码
	m_picIDmo=IDB_MO;
	CDrawTool::c_drawShape =moTool;
	CFigureObj::c_drawObj =moObj;

}

void CVisDrawView::OnTang()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDtang=IDB_TANG;
	CDrawTool::c_drawShape =tangTool;
	CFigureObj::c_drawObj =tangObj;
}

void CVisDrawView::OnZuan()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDzuan=IDB_ZUAN;
	CDrawTool::c_drawShape =zuanTool;
	CFigureObj::c_drawObj =zuanObj;
}

void CVisDrawView::OnZhongxin()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDjia=IDB_ZHONGXIN;
	CDrawTool::c_drawShape =zhongxinTool;
	CFigureObj::c_drawObj =zhongxinObj;
}

void CVisDrawView::OnZhewan()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDzhe=IDB_ZHEWAN;
	CDrawTool::c_drawShape =zhewanTool;
	CFigureObj::c_drawObj =zhewanObj;
}

void CVisDrawView::OnXi()
{
	// TODO: 在此添加命令处理程序代码
	m_picIDxi=IDB_XI;
	CDrawTool::c_drawShape =xiTool;
	CFigureObj::c_drawObj =xiObj;
	//m_type=3;
	//InvalidateRect(NULL);
}


/*void CVisDrawView::OnXuanze()
{
	// TODO: 在此添加命令处理程序代码
}*/

void CVisDrawView::OnDrawChe()
{
	// TODO: 在此添加命令处理程序代码
	m_picID=IDB_CHE;
	CDrawTool::c_drawShape =cheTool;
	CFigureObj::c_drawObj=cheObj;

}

void CVisDrawView::OnUpdateDrawChe(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == cheTool);
}

void CVisDrawView::OnDrawText()
{
	// TODO: 在此添加命令处理程序代码
	CDrawTool::c_drawShape =textTool;
//m_type=3;

}

void CVisDrawView::OnUpdateDrawText(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetRadio(CDrawTool::c_drawShape == textTool);
}


void CVisDrawView::OnRButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CVisDrawDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	/*if(CDrawTool::c_drawShape==textTool)
	{
		 


	

	}*/

	//if(CDrawTool::c_drawShape!=textTool)
//{
	CFigureObj* pObj;
	pObj=GetDocument()->ObjectAt(this,point);
//m_mouseStep++;
//if(m_mouseStep==1)
//{
	//m_select.RemoveAll();
	if(CDrawTool::c_drawShape!=selectTool)
	{
     CDrawTool::c_drawShape=selectTool;
	 
	 Invalidate();
	}
	
	//else 
	//	Invalidate();
	 //pDoc->SetModifiedFlag();
	// pDoc->UpdateAllViews(this);
	// m_mouseStep=1;
   if((m_select.GetCount() != 1)&&CDrawTool::c_drawShape==selectTool)
   {
	Invalidate();
return;
//}
   }

  
//pDoc->SetModifiedFlag();

           if((m_select.GetCount() == 1)&&CDrawTool::c_drawShape==selectTool)
		   {

			   CTextWriteDlg m_dlg;
			  POSITION pos =m_selection.GetHeadPosition();
POSITION pos01 =m_select.GetHeadPosition();
	
		//if((pos01 != NULL) && (m_selection.GetCount() == 1))
while((m_selection.GetCount() == 1))
		
		{
			
			pTextObj=m_select.GetNext(pos);
				m_dlg.m_string=pTextObj->m_string;
				if (m_dlg.DoModal() != IDOK)
				return;
				pTextObj->SetInputText(m_dlg.m_string);
				//pDoc->SetModifiedFlag();
				//pDoc->UpdateAllViews(NULL);
				Invalidate();
				return;
		
		}

		   }
 //}


//if(m_mouseStep==1&&CDrawTool::c_drawShape==textTool)

//{
//if(m_mouseStep==2)
//{

// m_mouseStep=0;
//}

 

	CVisDrawScrollView::OnRButtonDown(nFlags, point);
}
void CVisDrawView::OnRButtonUp(UINT nFlags, CPoint point)
	{
		// TODO: 在此添加消息处理程序代码和/或调用默认值
//m_mouseStep=1;
		m_mouseStep++;

		CVisDrawScrollView::OnRButtonUp(nFlags, point);
	}


void CVisDrawView::OnToolviewer()
{
	// TODO: 在此添加命令处理程序代码
//	#pragma   push_macro("new")
 //    #undef   new     
         
//	gcroot<VisDraw::FrmShow*> frm= __gc new FrmShow();
//	frm->ShowDialog();
	 // pOldActiveView->DestroyWindow()
	/*frm->dxfDataPicker1->
		System.Windows.Forms.Form*/
	   
	// Invalidate();
	//frm->UpdateStyles();
//	m_bdoing=TRUE;
	/*CRightView* pRView;
	pRView->*/

	// #pragma   pop_macro("new")
}

⌨️ 快捷键说明

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