📄 serverdrawdoc.cpp
字号:
// ServerDrawDoc.cpp : CServerDrawDoc 类的实现
//
#include "stdafx.h"
#include "ServerDraw.h"
#include "ServerDrawDoc.h"
#include "SrvrItem.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
IMPLEMENT_SERIAL(CLine,CObject,1)
CLine::CLine(CPoint pStart,CPoint pEnd)
{
m_pStart=pStart;
m_pEnd=pEnd;
}
void CLine::Drawing(CDC *pDC)
{
pDC->MoveTo(m_pStart);
pDC->LineTo(m_pEnd);
}
void CLine::Serialize(CArchive &ar)
{
if(ar.IsStoring())
ar<<m_pStart.x<<m_pStart.y<<m_pEnd.x<<m_pEnd.y;
else
ar>>m_pStart.x>>m_pStart.y>>m_pEnd.x>>m_pEnd.y;
}
// CServerDrawDoc
IMPLEMENT_DYNCREATE(CServerDrawDoc, COleServerDoc)
BEGIN_MESSAGE_MAP(CServerDrawDoc, COleServerDoc)
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
END_MESSAGE_MAP()
// CServerDrawDoc 构造/销毁
CServerDrawDoc::CServerDrawDoc()
{
// 使用 OLE 复合文件
EnableCompoundFile();
// TODO:在此添加一次性构造代码
}
CServerDrawDoc::~CServerDrawDoc()
{
}
BOOL CServerDrawDoc::OnNewDocument()
{
if (!COleServerDoc::OnNewDocument())
return FALSE;
// TODO:在此添加重新初始化代码
// (SDI 文档将重用该文档)
return TRUE;
}
// CServerDrawDoc 服务器实现
COleServerItem* CServerDrawDoc::OnGetEmbeddedItem()
{
// OnGetEmbeddedItem 由框架调用以获取与该文档关联的
//COleServerItem。只在必要时才调用它。
CServerDrawSrvrItem* pItem = new CServerDrawSrvrItem(this);
ASSERT_VALID(pItem);
return pItem;
}
// CServerDrawDoc 序列化
void CServerDrawDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO:在此添加存储代码
}
else
{
// TODO:在此添加加载代码
}
m_ObArray.Serialize(ar);
}
void CServerDrawDoc::AddDraw (CPoint pStart,CPoint pEnd)
{
CLine *pLine=new CLine(pStart,pEnd);
m_ObArray.Add(pLine);
SetModifiedFlag();
}
CLine *CServerDrawDoc::GetDraw(int index)
{
if(index<0||index>m_ObArray.GetUpperBound())return 0;
return(CLine *)m_ObArray.GetAt(index);
}
int CServerDrawDoc::GetDrawNumber()
{
return m_ObArray.GetSize();
}
CSize CServerDrawDoc::GetDocSize()
{
int XMax=1,YMax=1;
int x,y;
int index=m_ObArray.GetSize();
while(index--)
{
x=((CLine *)m_ObArray.GetAt(index))->GetMaxX();
XMax=x>XMax?x:XMax;
y=((CLine *)m_ObArray.GetAt(index))->GetMaxY();
YMax=y>YMax?y:YMax;
}
return CSize(XMax,YMax);
}
// CServerDrawDoc 诊断
#ifdef _DEBUG
void CServerDrawDoc::AssertValid() const
{
COleServerDoc::AssertValid();
}
void CServerDrawDoc::Dump(CDumpContext& dc) const
{
COleServerDoc::Dump(dc);
}
#endif //_DEBUG
// CServerDrawDoc 命令
void CServerDrawDoc::DeleteContents()
{
// TODO: 在此添加专用代码和/或调用基类
int index;
index=m_ObArray.GetSize();
while(index--)
delete m_ObArray.GetAt(index);
m_ObArray.RemoveAll();
COleServerDoc::DeleteContents();
}
void CServerDrawDoc::OnEditUndo()
{
// TODO: 在此添加命令处理程序代码
int index;
index=m_ObArray.GetUpperBound();
if(index>=0)
{
delete m_ObArray.GetAt(index);
m_ObArray.RemoveAt(index);
}
UpdateAllViews(NULL);
SetModifiedFlag();
}
void CServerDrawDoc::OnUpdateEditUndo(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(m_ObArray.GetSize());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -