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

📄 serverdrawdoc.cpp

📁 《Visual C++.NET MFC类库应用详解》程序实例
💻 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 + -