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

📄 drawdoc.cpp

📁 C++视图的程序
💻 CPP
字号:
// DrawDoc.cpp : implementation of the CDrawDoc class
//

#include "stdafx.h"
#include "Draw.h"
#include "PenDialog.h"
#include "DrawDoc.h"
#include "math.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc
enum {DRAW_VCLINE,DRAW_BEZIER,DRAW_RECTANGLE,DRAW_VCCIRCLE,DRAW_VCELLIPSE,DRAW_POLYGON};

IMPLEMENT_DYNCREATE(CDrawDoc, CDocument)

BEGIN_MESSAGE_MAP(CDrawDoc, CDocument)
	//{{AFX_MSG_MAP(CDrawDoc)
	ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
	ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
	ON_COMMAND(ID_DRAW_VCLINE, OnDrawVcline)
	ON_COMMAND(ID_DRAW_VCCIRCLE, OnDrawVccircle)
	ON_COMMAND(ID_DRAW_VCELLIPSE, OnDrawVcellipse)
	ON_COMMAND(ID_DRAW_BEZIER, OnDrawBezier)
	ON_COMMAND(ID_DRAW_POLYGON, OnDrawPolygon)
	ON_COMMAND(ID_DRAW_RECTANGLE, OnDrawRectangle)
	ON_COMMAND(ID_OPTIONS_COLOR, OnOptionsColor)
	ON_COMMAND(ID_OPTIONS_FILLCOLOR, OnOptionsFillcolor)
	ON_COMMAND(ID_OPTIONS_HATCHB, OnOptionsHatchb)
	ON_COMMAND(ID_OPTIONS_HATCHC, OnOptionsHatchc)
	ON_COMMAND(ID_OPTIONS_HATCHD, OnOptionsHatchd)
	ON_COMMAND(ID_OPTIONS_HATCHF, OnOptionsHatchf)
	ON_COMMAND(ID_OPTIONS_HATCHH, OnOptionsHatchh)
	ON_COMMAND(ID_OPTIONS_HATCHNULL, OnOptionsHatchnull)
	ON_COMMAND(ID_OPTIONS_HATCHV, OnOptionsHatchv)
	ON_COMMAND(ID_OPTIONS_PEN, OnOptionsPen)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc construction/destruction

CDrawDoc::CDrawDoc()
{
	// TODO: add one-time construction code here
    CurrentDraw=DRAW_VCLINE;
	DrawType=0;

    m_pWidth=1;
	m_pStyle=PEN_STYLE_SOLID;
	m_pColor=RGB(0,0,0);
	m_FFlag=0;
	m_FColor=RGB(0,0,0);
	m_HFlag=0;
}

CDrawDoc::~CDrawDoc()
{
}

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

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}

void CDrawDoc::AddShape(CShape *pShape)
{
	m_ObArray.Add(pShape);
	SetModifiedFlag();
}
CShape *CDrawDoc::GetShape(int index)
{
	if(index<0||index>m_ObArray.GetUpperBound())return 0;
	return(CShape *)m_ObArray.GetAt(index);
}
int CDrawDoc::GetShapeNumber()
{
	return m_ObArray.GetSize();
}


/////////////////////////////////////////////////////////////////////////////
// CDrawDoc serialization

void CDrawDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
	m_ObArray.Serialize(ar);

}

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc commands

void CDrawDoc::DeleteContents() 
{
	// TODO: Add your specialized code here and/or call the base class
	int index;
	index=m_ObArray.GetSize();
	while(index--)
		delete m_ObArray.GetAt(index);
	m_ObArray.RemoveAll();	
	UpdateAllViews(NULL);

}

void CDrawDoc::OnEditUndo() 
{
	// TODO: Add your command handler code here
    int index;
	index=m_ObArray.GetUpperBound();
	if(index>=0)
	{
		delete m_ObArray.GetAt(index);
		m_ObArray.RemoveAt(index);
	}
	UpdateAllViews(NULL);
    SetModifiedFlag();	
}

void CDrawDoc::OnUpdateEditUndo(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_ObArray.GetSize());
	
}

void CDrawDoc::OnDrawVcline() 
{
	// TODO: Add your command handler code here
	CurrentDraw=DRAW_VCLINE;
}

void CDrawDoc::OnDrawVccircle() 
{
	// TODO: Add your command handler code here
	CurrentDraw=DRAW_VCCIRCLE;

}

void CDrawDoc::OnDrawVcellipse() 
{
	// TODO: Add your command handler code here
	CurrentDraw=DRAW_VCELLIPSE;
	
}

void CDrawDoc::OnDrawBezier() 
{
	// TODO: Add your command handler code here
	CurrentDraw=DRAW_BEZIER;
}

void CDrawDoc::OnDrawPolygon() 
{
	// TODO: Add your command handler code here
	CurrentDraw=DRAW_POLYGON;

}

void CDrawDoc::OnDrawRectangle() 
{
	// TODO: Add your command handler code here
	CurrentDraw=DRAW_RECTANGLE;
	
}

void CDrawDoc::OnOptionsColor() 
{
	// TODO: Add your command handler code here
    CColorDialog ColorDialog;
	if(ColorDialog.DoModal()==IDOK)
		m_pColor=ColorDialog.GetColor();
	
}

void CDrawDoc::OnOptionsFillcolor() 
{
	// TODO: Add your command handler code here
    CColorDialog ColorDialog;
	if(ColorDialog.DoModal()==IDOK)
		m_FColor=ColorDialog.GetColor();	
	m_FFlag=1;	
	
}

void CDrawDoc::OnOptionsHatchb() 
{
	// TODO: Add your command handler code here
    m_Hatch=HS_BDIAGONAL;
	m_HFlag=1;	
	m_FFlag=1;	
}

void CDrawDoc::OnOptionsHatchc() 
{
	// TODO: Add your command handler code here
    m_Hatch=HS_CROSS;
	m_HFlag=1;	
	m_FFlag=1;	
	
}

void CDrawDoc::OnOptionsHatchd() 
{
	// TODO: Add your command handler code here
    m_Hatch=HS_DIAGCROSS;
	m_HFlag=1;	
	m_FFlag=1;	
	
}

void CDrawDoc::OnOptionsHatchf() 
{
	// TODO: Add your command handler code here
    m_Hatch=HS_FDIAGONAL;
	m_HFlag=1;	
	m_FFlag=1;	
	
}

void CDrawDoc::OnOptionsHatchh() 
{
	// TODO: Add your command handler code here
    m_Hatch=HS_HORIZONTAL;
	m_HFlag=1;	
	m_FFlag=1;	
	
}

void CDrawDoc::OnOptionsHatchnull() 
{
	// TODO: Add your command handler code here
	m_HFlag=0;	
	
}

void CDrawDoc::OnOptionsHatchv() 
{
	// TODO: Add your command handler code here
    m_Hatch=HS_VERTICAL;
	m_HFlag=1;	
	m_FFlag=1;	

}


void CDrawDoc::OnOptionsPen() 
{
	// TODO: Add your command handler code here
    CPenDialog PenDialog;
	PenDialog.m_pWidth=m_pWidth;
	PenDialog.m_pStyle=m_pStyle;
	if(PenDialog.DoModal()==IDOK)
	{
		m_pWidth=PenDialog.m_pWidth;
		m_pStyle=PenDialog.m_pStyle;
	}	
}


⌨️ 快捷键说明

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