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

📄 srvritem.cpp

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