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

📄 paintdoc.cpp

📁 这是书上的代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// paintdoc.cpp : implementation of the CPaintobjDoc class
//

#include "stdafx.h"
#include "const.h"
#include "painted.h"
#include "paintobj.h"
#include "paintdoc.h"
#include "line.h"
#include "square.h"
#include "circle.h"

#include "SearchPath.h"
#include "SearchNode.h"
#include "paintvw.h"
#include "Node.h"
#include "ArcPath.h"
#include "LinePath.h"
#include "InputLineStartNode.h"
#include "InputLineStartEndNode.h"
#include "mainfrm.h"
#include "InputArcRadius.h"
#include "InputArcStartNode.h"
#include "InputArcStartEndNode.h"
#include "MyFileDialog.h"
#include "MyFileDialog1.h"
#include "LazysAngleDlg.h"
#include "LazysStartnodeAngleDlg.h"
#include "LazysStartEndnodeAngleDlg.h"
#include "ScpAngleDlg.h"
#include "ScpStartnodeAngleDlg.h"
#include "ScpStartEndnodeAngleDlg.h"
#include "SideStartnodeDlg.h"
#include "SideStartEndnode.h"
#include "ChordRadiusDlg.h"
#include "ChordRadiusStartEndDlg.h"
#include "ChordRadiusStartnodeDlg.h"
#include "PieRadiusDlg.h"
#include "PieRadiusStartEndDlg.h"
#include "PieRadiusStartnodeDlg.h"
#include "EllipseStartEndnodeDlg.h"
#include "RectStartEndnodeDlg.h"
#include "RoundrectHeightWideDlg.h"
#include "RoundrectHeightWideRectDlg.h"
#include "PaintLazys.h"
#include "PaintChord.h"
#include "PaintPie.h"
#include "PaintPolygon.h"
#include "PaintRoundrect.h"
#include "PaintScp.h"
#include "PaintSide.h"
#include "PolygonallDlg.h"
#include "SideAngleDlg.h"
#include "LazysPath.h"

#include <assert.h>
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
extern int m_wscreen;//客户区宽度(逻辑坐标)
extern int m_hscreen;//客户区高度(逻辑坐标)
extern double fscale;
extern double fbasicscale;
extern double fxmin;
extern double fymin;
extern double fxmax;
extern double fymax;
extern double m_xstart;
extern double m_ystart;
extern void DPtoVP(CPnt pnt,CPoint& point);
extern void VPtoDP(CPoint point,CPnt& pnt);
/////////////////////////////////////////////////////////////////////////////
// CPaintobjDoc

IMPLEMENT_DYNCREATE(CPaintobjDoc, CDocument)

BEGIN_MESSAGE_MAP(CPaintobjDoc, CDocument)
	//{{AFX_MSG_MAP(CPaintobjDoc)
	ON_COMMAND(ID_TOOL_SELECTOR, OnToolSelector)
	ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
	ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOMIN, OnUpdateViewZoomin)
	ON_COMMAND(ID_VIEW_ZOOMOUT, OnViewZoomout)
	ON_UPDATE_COMMAND_UI(ID_VIEW_ZOOMOUT, OnUpdateViewZoomout)
	ON_COMMAND(ID_OUTPUT_SAVEOUTDATA, OnOutputSaveoutdata)
	ON_COMMAND(ID_TOOL_CLOCKWISEARC, OnToolClockwisearc)
	ON_COMMAND(ID_TOOL_ANTICLOCKWISEARC, OnToolAnticlockwisearc)
	ON_UPDATE_COMMAND_UI(ID_VIEW_MOVE, OnUpdateViewMove)
	ON_COMMAND(ID_VIEW_MOVE, OnViewMove)
	ON_COMMAND(ID_SELECT_TANGENCY, OnSelectTangency)
	ON_UPDATE_COMMAND_UI(ID_SELECT_TANGENCY, OnUpdateSelectTangency)
	ON_COMMAND(ID_SELECT_NOTTANGENCY, OnSelectNottangency)
	ON_UPDATE_COMMAND_UI(ID_SELECT_NOTTANGENCY, OnUpdateSelectNottangency)
	ON_COMMAND(ID_TOOL_LINE_NORMAL, OnToolLineNormal)
	ON_COMMAND(ID_TOOL_LINE_STARTNODE, OnToolLineStartnode)
	ON_COMMAND(ID_TOOL_CLOCKWISE_NORMAL, OnToolClockwiseNormal)
	ON_COMMAND(ID_TOOL_CLOCKWISE_RADIUS, OnToolClockwiseRadius)
	ON_COMMAND(ID_TOOL_CLOCKWISE_STARTENDNODE, OnToolClockwiseStartendnode)
	ON_COMMAND(ID_TOOL_CLOCKWISE_STARTNODE, OnToolClockwiseStartnode)
	ON_COMMAND(ID_TOOL_ANTICLOCKWISE_NORMAL, OnToolAnticlockwiseNormal)
	ON_COMMAND(ID_TOOL_ANTICLOCKWISE_RADIUS, OnToolAnticlockwiseRadius)
	ON_COMMAND(ID_TOOL_ANTICLOCKWISE_STARTENDNODE, OnToolAnticlockwiseStartendnode)
	ON_COMMAND(ID_TOOL_ANTICLOCKWISE_STARTNODE, OnToolAnticlockwiseStartnode)
	ON_COMMAND(ID_TOOL_LINE_ANGLELENGTH, OnToolLineAnglelength)
	ON_COMMAND(ID_TOOL_LINE_STARTENDNODE, OnToolLineStartendnode)
	ON_COMMAND(ID_TOOL_CHORD_NORMAL, OnToolChordNormal)
	ON_COMMAND(ID_TOOL_CHORD_RADIUS, OnToolChordRadius)
	ON_COMMAND(ID_TOOL_CHORD_STARTENDNODE, OnToolChordStartendnode)
	ON_COMMAND(ID_TOOL_CHORD_STARTNODE, OnToolChordStartnode)
	ON_COMMAND(ID_TOOL_ELLIPSE_NORMAL, OnToolEllipseNormal)
	ON_COMMAND(ID_TOOL_ELLIPSE_STARTENDNODE, OnToolEllipseStartendnode)
	ON_COMMAND(ID_TOOL_LAZYS_ANGLE, OnToolLazysAngle)
	ON_COMMAND(ID_TOOL_LAZYS_ANGLESTARTENDNODE, OnToolLazysAnglestartendnode)
	ON_COMMAND(ID_TOOL_LAZYS_ANGLESTARTNODE, OnToolLazysAnglestartnode)
	ON_COMMAND(ID_TOOL_PIE_NORMAL, OnToolPieNormal)
	ON_COMMAND(ID_TOOL_PIE_RADIUS, OnToolPieRadius)
	ON_COMMAND(ID_TOOL_PIE_STARTENDNODE, OnToolPieStartendnode)
	ON_COMMAND(ID_TOOL_PIE_STARTNODE, OnToolPieStartnode)
	ON_COMMAND(ID_TOOL_POLYGON_ALLNODE, OnToolPolygonAllnode)
	ON_COMMAND(ID_TOOL_POLYGON_NORMAL, OnToolPolygonNormal)
	ON_COMMAND(ID_TOOL_RECT_NORMAL, OnToolRectNormal)
	ON_COMMAND(ID_TOOL_RECT_STARTENDNODE, OnToolRectStartendnode)
	ON_COMMAND(ID_TOOL_ROUNDRECT_ELLIPSE, OnToolRoundrectEllipse)
	ON_COMMAND(ID_TOOL_ROUNDRECT_ELLIPSESTARTENDNODE, OnToolRoundrectEllipsestartendnode)
	ON_COMMAND(ID_TOOL_SCP_ANGLE, OnToolScpAngle)
	ON_COMMAND(ID_TOOL_SCP_ANGLESTARTENDNODE, OnToolScpAnglestartendnode)
	ON_COMMAND(ID_TOOL_SCP_ANGLESTARTNODE, OnToolScpAnglestartnode)
	ON_COMMAND(ID_TOOL_SIDE_NORMAL, OnToolSideNormal)
	ON_COMMAND(ID_TOOL_SIDE_STARTENDNODE, OnToolSideStartendnode)
	ON_COMMAND(ID_TOOL_SIDE_STARTNODE, OnToolSideStartnode)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SELECTOR, OnUpdateToolCheck)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_TOOL_BUILDING_ANTICLOCKWISE_NORMAL, OnToolBuildingAnticlockwiseNormal)
	ON_COMMAND(ID_TOOL_BUILDING_ANTICLOCKWISE_RADIUS, OnToolBuildingAnticlockwiseRadius)
	ON_COMMAND(ID_TOOL_BUILDING_ANTICLOCKWISE_STARTENDNODE, OnToolBuildingAnticlockwiseStartendnode)
	ON_COMMAND(ID_TOOL_BUILDING_ANTICLOCKWISE_STARTNODE, OnToolBuildingAnticlockwiseStartnode)
	ON_COMMAND(ID_TOOL_BUILDING_CLOCKWISE_NORMAL, OnToolBuildingClockwiseNormal)
	ON_COMMAND(ID_TOOL_BUILDING_CLOCKWISE_RADIUS, OnToolBuildingClockwiseRadius)
	ON_COMMAND(ID_TOOL_BUILDING_CLOCKWISE_STARTENDNODE, OnToolBuildingClockwiseStartendnode)
	ON_COMMAND(ID_TOOL_BUILDING_CLOCKWISE_STARTNODE, OnToolBuildingClockwiseStartnode)
	ON_COMMAND(ID_TOOL_BUILDING_LAZYS_ANGLE, OnToolBuildingLazysAngle)
	ON_COMMAND(ID_TOOL_BUILDING_LAZYS_ANGLESTARTENDNODE, OnToolBuildingLazysAnglestartendnode)
	ON_COMMAND(ID_TOOL_BUILDING_LAZYS_ANGLESTARTNODE, OnToolBuildingLazysAnglestartnode)
	ON_COMMAND(ID_TOOL_BUILDING_LINE_NORMAL, OnToolBuildingLineNormal)
	ON_COMMAND(ID_TOOL_BUILDING_LINE_STARTENDNODE, OnToolBuildingLineStartendnode)
	ON_COMMAND(ID_TOOL_BUILDING_LINE_STARTNODE, OnToolBuildingLineStartnode)
	ON_COMMAND(ID_TOOL_DEVICE_ANTICLOCKWISE_NORMAL, OnToolDeviceAnticlockwiseNormal)
	ON_COMMAND(ID_TOOL_DEVICE_ANTICLOCKWISE_RADIUS, OnToolDeviceAnticlockwiseRadius)
	ON_COMMAND(ID_TOOL_DEVICE_ANTICLOCKWISE_STARTENDNODE, OnToolDeviceAnticlockwiseStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_ANTICLOCKWISE_STARTNODE, OnToolDeviceAnticlockwiseStartnode)
	ON_COMMAND(ID_TOOL_DEVICE_CHORD_NORMAL, OnToolDeviceChordNormal)
	ON_COMMAND(ID_TOOL_DEVICE_CHORD_RADIUS, OnToolDeviceChordRadius)
	ON_COMMAND(ID_TOOL_DEVICE_CHORD_STARTENDNODE, OnToolDeviceChordStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_CHORD_STARTNODE, OnToolDeviceChordStartnode)
	ON_COMMAND(ID_TOOL_DEVICE_CLOCKWISE_NORMAL, OnToolDeviceClockwiseNormal)
	ON_COMMAND(ID_TOOL_DEVICE_CLOCKWISE_RADIUS, OnToolDeviceClockwiseRadius)
	ON_COMMAND(ID_TOOL_DEVICE_CLOCKWISE_STARTENDNODE, OnToolDeviceClockwiseStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_CLOCKWISE_STARTNODE, OnToolDeviceClockwiseStartnode)
	ON_COMMAND(ID_TOOL_DEVICE_ELLIPSE_NORMAL, OnToolDeviceEllipseNormal)
	ON_COMMAND(ID_TOOL_DEVICE_ELLIPSE_STARTENDNODE, OnToolDeviceEllipseStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_LAZYS_ANGLE, OnToolDeviceLazysAngle)
	ON_COMMAND(ID_TOOL_DEVICE_LAZYS_ANGLESTARTENDNODE, OnToolDeviceLazysAnglestartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_LAZYS_ANGLESTARTNODE, OnToolDeviceLazysAnglestartnode)
	ON_COMMAND(ID_TOOL_DEVICE_LINE_NORMAL, OnToolDeviceLineNormal)
	ON_COMMAND(ID_TOOL_DEVICE_LINE_STARTENDNODE, OnToolDeviceLineStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_LINE_STARTNODE, OnToolDeviceLineStartnode)
	ON_COMMAND(ID_TOOL_DEVICE_PIE_NORMAL, OnToolDevicePieNormal)
	ON_COMMAND(ID_TOOL_DEVICE_PIE_RADIUS, OnToolDevicePieRadius)
	ON_COMMAND(ID_TOOL_DEVICE_PIE_STARTENDNODE, OnToolDevicePieStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_PIE_STARTNODE, OnToolDevicePieStartnode)
	ON_COMMAND(ID_TOOL_DEVICE_POLYGON_ALLNODE, OnToolDevicePolygonAllnode)
	ON_COMMAND(ID_TOOL_DEVICE_POLYGON_NORMAL, OnToolDevicePolygonNormal)
	ON_COMMAND(ID_TOOL_DEVICE_RECT_NORMAL, OnToolDeviceRectNormal)
	ON_COMMAND(ID_TOOL_DEVICE_RECT_STARTENDNODE, OnToolDeviceRectStartendnode)
	ON_COMMAND(ID_TOOL_DEVICE_ROUNDRECT_ELLIPSE, OnToolDeviceRoundrectEllipse)
	ON_COMMAND(ID_TOOL_DEVICE_ROUNDRECT_ELLIPSESTARTENDNODE, OnToolDeviceRoundrectEllipsestartendnode)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ARC, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CLOCKWISEARC, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ANTICLOCKWISEARC, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LINE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LINE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ANTICLOCKWISE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ANTICLOCKWISE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ANTICLOCKWISE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ANTICLOCKWISE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CLOCKWISE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CLOCKWISE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CLOCKWISE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CLOCKWISE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LINE_ANGLELENGTH, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LINE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CHORD_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CHORD_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CHORD_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_CHORD_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ELLIPSE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ELLIPSE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LAZYS_ANGLE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LAZYS_ANGLESTARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_LAZYS_ANGLESTARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_PIE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_PIE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_PIE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_PIE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_POLYGON_ALLNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_POLYGON_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_RECT_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_RECT_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ROUNDRECT_ELLIPSE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_ROUNDRECT_ELLIPSESTARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SCP_ANGLE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SCP_ANGLESTARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SCP_ANGLESTARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SIDE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SIDE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_SIDE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_ANTICLOCKWISE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_ANTICLOCKWISE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_ANTICLOCKWISE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_ANTICLOCKWISE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_CLOCKWISE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_CLOCKWISE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_CLOCKWISE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_CLOCKWISE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_LAZYS_ANGLE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_LAZYS_ANGLESTARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_LAZYS_ANGLESTARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_LINE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_LINE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_BUILDING_LINE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ANTICLOCKWISE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ANTICLOCKWISE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ANTICLOCKWISE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ANTICLOCKWISE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CHORD_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CHORD_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CHORD_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CHORD_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CLOCKWISE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CLOCKWISE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CLOCKWISE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_CLOCKWISE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ELLIPSE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ELLIPSE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_LAZYS_ANGLE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_LAZYS_ANGLESTARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_LAZYS_ANGLESTARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_LINE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_LINE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_LINE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_PIE_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_PIE_RADIUS, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_PIE_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_PIE_STARTNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_POLYGON_ALLNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_POLYGON_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_RECT_NORMAL, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_RECT_STARTENDNODE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ROUNDRECT_ELLIPSE, OnUpdateToolCheck)
	ON_UPDATE_COMMAND_UI(ID_TOOL_DEVICE_ROUNDRECT_ELLIPSESTARTENDNODE, OnUpdateToolCheck)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPaintobjDoc construction/destruction

CPaintobjDoc::CPaintobjDoc()
{
	GraphSelect = NULL;
	PointXY = NULL;
	ResetAll();
}

CPaintobjDoc::~CPaintobjDoc()
{	fscale=1.0f;//关闭文档变量恢复到初始值	
	if (m_pSelectedTool != NULL)
		delete m_pSelectedTool;
	delete []PointXY;//记录多边形顶点的数组指针
	delete []GraphSelect;	
	DeleteContents();
}

BOOL CPaintobjDoc::OnNewDocument()
{
	if (m_pSelectedTool != NULL)
		delete m_pSelectedTool;
	int nItems = m_Objects.GetSize();
    for (int i = 0; i < nItems; i++)
    {
        delete m_Objects[i];
    }
    m_Objects.RemoveAll();
	ResetAll();
	fxmin=0;
	fymin=0;
	m_xstart=0;
	m_ystart=0;
	fxmax=5;
	fymax=5;
	fscale=1.0;
	if (!CDocument::OnNewDocument())
		return FALSE;

	UpdateAllViews(NULL);
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CPaintobjDoc serialization

void CPaintobjDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		ar <<fxmin;
		ar <<fxmax;
		ar <<fymin;
		ar <<fymax;
		ar <<m_uCurNodeIdMax;
		ar <<m_uCurPathIdMax;	
	}
	else
	{		
		ar >>fxmin;
		ar >>fxmax;
		ar >>fymin;
		ar >>fymax;
		ar >>m_uCurNodeIdMax;
		ar >>m_uCurPathIdMax;
	}
	m_Objects.Serialize(ar);
	
}

/////////////////////////////////////////////////////////////////////////////
// CPaintobjDoc diagnostics

#ifdef _DEBUG
void CPaintobjDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CPaintobjDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CPaintobjDoc commands


void CPaintobjDoc::DeleteContents() 
{	
	//清空图形元素集合
	int nItems = m_Objects.GetSize();
    for (int i = 0; i < nItems; i++)
    {
        delete m_Objects[i];
    }
    m_Objects.RemoveAll();
	//清空节点库	
	nItems = m_Objectsnode.GetSize();
    for (int ii = 0; ii < nItems; ii++)
    {
        delete m_Objectsnode[ii];
    }
	m_Objectsnode.RemoveAll();
	//清空路径库
	nItems = m_Objectspath.GetSize();
    for (int iii = 0; iii < nItems; iii++)
    {
        delete m_Objectspath[iii];
    }
	m_Objectspath.RemoveAll();

	CDocument::DeleteContents();
}

void CPaintobjDoc::GenerateTool()
{
	if(m_pSelectedTool != NULL)
	{	
		delete m_pSelectedTool;
		m_pSelectedTool = NULL;
	}

⌨️ 快捷键说明

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