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;
}
}