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

📄 gdrawdoc.cpp

📁 VS2005 MFC 实现的画图程序
💻 CPP
字号:
// GDrawDoc.cpp : CGDrawDoc 类的实现
//

#include "stdafx.h"
#include "GDraw.h"
#include"Graph_Union.h"
#include "GDrawDoc.h"
#include "GDrawView.h"
#include"LinePro2.h"
#include"MainFrm.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CGDrawDoc

IMPLEMENT_DYNCREATE(CGDrawDoc, CDocument)

BEGIN_MESSAGE_MAP(CGDrawDoc, CDocument)

	ON_COMMAND(ID_Save, &CGDrawDoc::OnSave)
	ON_COMMAND(ID_HIDE, &CGDrawDoc::OnHide)
	ON_COMMAND(ID_BUTTON32791, &CGDrawDoc::OnLine)
	ON_COMMAND(ID_BREAKLS, &CGDrawDoc::OnBkL)
	ON_COMMAND(ID_CCLE, &CGDrawDoc::OnCircle)	
	ON_COMMAND(ID_SELECT, &CGDrawDoc::OnSelectGraph)	
	ON_COMMAND(ID_SETFIL, &CGDrawDoc::setfill)	
	
	ON_COMMAND(ID_RAILWAY, &CGDrawDoc::OnRailway)
END_MESSAGE_MAP()


// CGDrawDoc 构造/析构

CGDrawDoc::CGDrawDoc()
{
	// TODO: 在此添加一次性构造代码
	size=0;
	width=1024;
	height=768;
}

CGDrawDoc::~CGDrawDoc()
{
}

BOOL CGDrawDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: 在此添加重新初始化代码
	// (SDI 文档将重用该文档)

	return TRUE;
}




// CGDrawDoc 序列化

void CGDrawDoc::Serialize(CArchive& ar)
{
	// storing code
  	CObject::Serialize(ar);

	if(ar.IsStoring())
	{
		CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		int s=view->m_graphlist.size();
		int ssi=0;
		for(view->docgp=view->m_graphlist.begin ();view->docgp!=view->m_graphlist.end();view->docgp++)
				if( view->docgp->type==-1) ssi++;
		s-=ssi;
        ar<<s;
		for(view->docgp=view->m_graphlist.begin ();view->docgp!=view->m_graphlist.end();view->docgp++)
			{
				if( view->docgp->type==-1) continue;
				ar<<view->docgp->shape;
				ar<<view->docgp->color;
				ar<<view->docgp->wide;
				ar<<view->docgp->count;
				for( int i=0;i<view->docgp->count;i++)
				{
					ar<<view->docgp->pp[i].x;
					ar<<view->docgp->pp[i].y;
				}
				ar<<view->docgp->type;
				ar<<view->docgp->fill_color;
			
			}
		ar<<view->bg_color;
		ar<<view->width;
		ar<<view->height;
	}
	else
	{		

		ar>>size;   
		ptr=new pro[size+1];
	   for(int i=0;i<size;i++)
		{
			ar>>ptr[i].shape;
			ar>>ptr[i].colors;
			ar>>ptr[i].wide;
			ar>>ptr[i].count;
			int tmp=ptr[i].count;
			ptr[i].p=new CPoint[tmp+1];
			for( int j=0;j<tmp;j++)
			{
				ar>>ptr[i].p[j].x;
				ar>>ptr[i].p[j].y;
			}
			ar>>ptr[i].type;
			ar>>ptr[i].fill_color;
		}
		ar>>bg_color;
		ar>>width;
		ar>>height;
	}
}


// CGDrawDoc 诊断

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

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


// CGDrawDoc 命令

void CGDrawDoc::OnSave()
{
	// TODO: 在此添加命令处理程序代码
		CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->OnSave();
}

void CGDrawDoc::OnHide()
{
	// TODO: 在此添加命令处理程序代码
	    CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->OnHide();
}
void CGDrawDoc::OnLine()
{
	// TODO: 在此添加命令处理程序代码
	    CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->OnLine();
}
void CGDrawDoc::OnBkL()
{
	// TODO: 在此添加命令处理程序代码
	    CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->On_BreakLS();
}
void CGDrawDoc::OnCircle()
{
	// TODO: 在此添加命令处理程序代码
	    CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->OnCircle();
}
void CGDrawDoc::OnSelectGraph()
{
	// TODO: 在此添加命令处理程序代码
	    CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->OnSelectGraph();
}
void CGDrawDoc::setfill()
{
	// TODO: 在此添加命令处理程序代码
	    CMainFrame*   MainFrame   =   (CMainFrame*)AfxGetMainWnd();
		CGDrawView  *view=(CGDrawView*)MainFrame->m_wndSplitter.GetPane(0,0);
		view->OnSetfil();
}
void CGDrawDoc::OnRailway()
{
	// TODO: 在此添加命令处理程序代码
}

⌨️ 快捷键说明

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