www.pudn.com > BallMove.rar > BallMoveDoc.cpp


// BallMoveDoc.cpp :  CBallMoveDoc 类的实现 
// 
 
#include "stdafx.h" 
#include "BallMove.h" 
 
#include "BallMoveDoc.h" 
#include ".\ballmovedoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 
 
 
// CBallMoveDoc 
 
IMPLEMENT_DYNCREATE(CBallMoveDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CBallMoveDoc, CDocument) 
END_MESSAGE_MAP() 
 
 
// CBallMoveDoc 构造/析构 
 
CBallMoveDoc::CBallMoveDoc() 
{ 
	// TODO: 在此添加一次性构造代码 
	m_R=10;       
	m_H=200; 
	m_V=40; 
	m_A=0.5; 
	m_top.x=10; 
	m_top.y=280; 
	m_bottom.x=30; 
	m_bottom.y=300; 
//	t=0; 
 
} 
 
CBallMoveDoc::~CBallMoveDoc() 
{ 
} 
 
BOOL CBallMoveDoc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	// TODO: 在此添加重新初始化代码 
	// (SDI 文档将重用该文档) 
 
	return TRUE; 
} 
 
 
 
 
// CBallMoveDoc 序列化 
 
void CBallMoveDoc::Serialize(CArchive& ar) 
{ 
	if (ar.IsStoring()) 
	{ 
		// TODO: 在此添加存储代码 
		ar << m_H << m_V<< m_R <> m_H >> m_V>> m_R >> m_A >>m_top.x>> m_top.y >> m_bottom.x >> m_bottom.y; 
	} 
	m_ObArray.Serialize(ar); 
} 
 
 
// CBallMoveDoc 诊断 
 
#ifdef _DEBUG 
void CBallMoveDoc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CBallMoveDoc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
void CBallMoveDoc::AddDraw(CPoint top, CPoint bottom)     //添加显示轨迹的小球 
{ 
	CBall   *Ball=new CBall(top,bottom); 
	m_ObArray.Add(Ball); 
	SetModifiedFlag(); 
} 
CBall *CBallMoveDoc::GetDraw(int index) 
{ 
	if(index<0||index>m_ObArray.GetUpperBound()) 
		return 0; 
	return(CBall *)m_ObArray.GetAt(index); 
} 
int CBallMoveDoc::GetDrawNumber() 
{ 
	return m_ObArray.GetSize (); 
} 
#endif //_DEBUG 
 
 
// CBallMoveDoc 命令 
IMPLEMENT_SERIAL(CBall, CObject,1) 
CBall:: CBall(CPoint top, CPoint bottom) 
{ 
	m_top=top; 
	m_bottom=bottom; 
} 
void CBall::Drawing(CDC *pDC) 
{ 
	pDC->Ellipse(m_top.x,m_top.y,m_bottom.x,m_bottom.y); 
} 
void CBallMoveDoc::DeleteContents()    
{ 
	int index; 
	index=m_ObArray.GetSize(); 
	while(index--) 
		delete m_ObArray.GetAt(index); 
	m_ObArray.RemoveAll(); 
	SetModifiedFlag(); 
} 
void CBall::Serialize( CArchive &ar) 
{ 
if (ar.IsStoring()) 
{ 
    ar << m_top.x << m_top.y << m_bottom.x<< m_bottom.y; 
} 
 
 
else 
{ 
    ar >> m_top.x >> m_top.y >> m_bottom.x >> m_bottom.y; 
} 
}