📄 srvritem.cpp
字号:
// SrvrItem.cpp : CServerDrawSrvrItem 类的实现
//
#include "stdafx.h"
#include "ServerDraw.h"
#include "ServerDrawDoc.h"
#include "SrvrItem.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CServerDrawSrvrItem 实现
IMPLEMENT_DYNAMIC(CServerDrawSrvrItem, COleServerItem)
CServerDrawSrvrItem::CServerDrawSrvrItem(CServerDrawDoc* pContainerDoc)
: COleServerItem(pContainerDoc, TRUE)
{
// TODO: 在此处添加一次性构造代码
//(如将附加剪贴板格式添加到项的数据源中)
}
CServerDrawSrvrItem::~CServerDrawSrvrItem()
{
// TODO: 在此处添加清除代码
}
void CServerDrawSrvrItem::Serialize(CArchive& ar)
{
// 如果将该项复制到剪贴板中,
// 则框架将调用 CServerDrawSrvrItem::Serialize。这可以
// 通过 OLE 回调 OnGetClipboardData 而自动执行。对于嵌入项,默认最好为对文档的 Serialize
// 函数的委托。如果支持链接,则可能只需序列化
// 文档的一部分。
if (!IsLinkedItem())
{
CServerDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->Serialize(ar);
}
}
BOOL CServerDrawSrvrItem::OnGetExtent(DVASPECT dwDrawAspect, CSize& rSize)
{
// 大多数与此类似的应用程序只对绘制项的内容
// 方面进行处理。如果希望支持其他方面,如
// DVASPECT_THUMBNAIL (通过重写 OnDrawEx),则应修改 OnGetExtent 的此实现
// 以处理
//其他方面。
if (dwDrawAspect != DVASPECT_CONTENT)
return COleServerItem::OnGetExtent(dwDrawAspect, rSize);
// 调用 CServerDrawSrvrItem::OnGetExtent 以便在整个项的 HIMETRIC 单元中获取范围。
// 此处的默认实现
// 只返回单元的硬编码数字。
CServerDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: 替换此任意大小
rSize = CSize(3000, 3000); // 3000 x 3000 HIMETRIC 单元
return TRUE;
}
BOOL CServerDrawSrvrItem::OnDraw(CDC* pDC, CSize& rSize)
{
// 如果使用 rSize,则将此移除
UNREFERENCED_PARAMETER(rSize);
CServerDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: 设置映射模式和范围
// (此范围通常与从 OnGetExtent 返回的大小相同)
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowOrg(0,0);
// pDC->SetWindowExt(3000, 3000);
pDC->SetWindowExt(pDoc->GetDocSize());
// TODO: 在此处添加绘制代码。也可以填充 HIMETRIC 范围。
// 所有绘制都将在图元文件设备上下文 (pDC) 中进行。
int index=pDoc->GetDrawNumber();
while(index--)
pDoc->GetDraw(index)->Drawing(pDC);
return TRUE;
}
// CServerDrawSrvrItem 诊断
#ifdef _DEBUG
void CServerDrawSrvrItem::AssertValid() const
{
COleServerItem::AssertValid();
}
void CServerDrawSrvrItem::Dump(CDumpContext& dc) const
{
COleServerItem::Dump(dc);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -