📄 visdrawview.cpp
字号:
}
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 + -