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

📄 gridsdoc.cpp

📁 mfc internals 源码 mfc internals 源码
💻 CPP
字号:
// gridsdoc.cpp : implementation of the CGridSampleDoc class
//

// This is a part of the Objective Grid C++ Library.
// Copyright (C) 1995 ClassWorks, Stefan Hoenig.
// All rights reserved.
//
// This source code is only intended as a supplement to
// the Objective Grid Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding
// the Objective Grid product.
//

#include "stdafx.h"
#include "gridapp.h"

#include "gridsdoc.h"

#ifndef _GXTWND_H_
#include "gxtwnd.h"
#endif

#ifndef _GXVW_H_
#include "gxvw.h"
#endif

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CGridSampleDoc

IMPLEMENT_DYNCREATE(CGridSampleDoc, CDocument)

#define new DEBUG_NEW

BEGIN_MESSAGE_MAP(CGridSampleDoc, CDocument)
	//{{AFX_MSG_MAP(CGridSampleDoc)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGridSampleDoc construction/destruction

CGridSampleDoc::CGridSampleDoc()
{
}

CGridSampleDoc::~CGridSampleDoc()
{
	DeleteContents();
}

void CGridSampleDoc::DeleteContents()
{
	int nSize = m_ParamArray.GetSize();

	for (int i = 0; i < m_bOwnParamArray.GetSize(); i++)
		if (m_bOwnParamArray[i])
			delete m_ParamArray[i];

	m_ParamArray.RemoveAll();
	m_bOwnParamArray.RemoveAll();
}

BOOL CGridSampleDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	SetModifiedFlag();

	return TRUE;
}

BOOL CGridSampleDoc::OnOpenDocument(LPCTSTR pszPathName)
{
	// TRACE1("CDocument: OnOpenDocument(%s)\n", pszPathName);

	SetModifiedFlag(FALSE);

	if (!CDocument::OnOpenDocument(pszPathName))
		return FALSE;

	return TRUE;
}

BOOL CGridSampleDoc::OnSaveDocument(LPCTSTR pszPathName)
{
	// TRACE1("CDocument: OnSaveDocument(%s)\n", pszPathName);

	// Ensure that each views current cell is stored
	CGXGridHint hint(gxHintTransferCurrentCell);
	hint.lParam = TRUE;

	UpdateAllViews(NULL, 0, &hint);

	// Now, I can save the document
	if (!CDocument::OnSaveDocument(pszPathName))
		return FALSE;

	SetModifiedFlag(FALSE);

	return TRUE;
}

BOOL CGridSampleDoc::CanCloseFrame(CFrameWnd* pFrame)
{
	// Ensure that views can be deactivated
	CView* pView = pFrame->GetActiveView();
	if (pView && pView->SendMessage(WM_GX_CANACTIVATE, 0, 0))
		return FALSE;

	// Ensure that the current cell is stored
	if (pView->IsKindOf(RUNTIME_CLASS(CGXGridView))
		&& !((CGXGridView*) pView)->TransferCurrentCell())
		return FALSE;

	// Now, I can close the view
	return CDocument::CanCloseFrame(pFrame);
}

/////////////////////////////////////////////////////////////////////////////
// CGridSampleDoc serialization

void CGridSampleDoc::Serialize(CArchive& ar)
{
	static const WORD wVersion = 1;
	WORD wActualVersion = wVersion;

	ASSERT_VALID( this );

	if (ar.IsStoring())
	{
		ar << wVersion;
	}
	else
	{
		// Check for version first
		ar >> wActualVersion;
		if( wActualVersion != wVersion )
		{
			// Wrong version
#ifdef _DEBUG
			TRACE0( "Imcompatible format while reading " );
			CObject::Dump(afxDump);
			TRACE2("in %s at line %d\n", __FILE__, __LINE__);
#endif
			AfxThrowArchiveException(CArchiveException::badSchema);
			return;
		}
	}

	m_ParamArray.Serialize( ar );
	m_bOwnParamArray.Serialize( ar );
}


/////////////////////////////////////////////////////////////////////////////
// CGridSampleDoc diagnostics

#ifdef _DEBUG
void CGridSampleDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CGridSampleDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CGridSampleDoc commands

CObject* CGridSampleDoc::GetParam(int nViewID)
{
	CObject* pParam = NULL;

	if (m_ParamArray.GetUpperBound() >= nViewID && m_ParamArray[nViewID])
		pParam = m_ParamArray[nViewID];

	return pParam;
}

void CGridSampleDoc::SetParam(int nViewID, CObject* pParam, BOOL bMustDelete)
{
	CObject* pDocParam = NULL;

	if (m_ParamArray.GetUpperBound() >= nViewID && m_ParamArray[nViewID])
		pDocParam = m_ParamArray[nViewID];

	if (pDocParam == NULL || pParam != NULL)
	{
		if (pDocParam)
			delete pDocParam;

		ASSERT_VALID(pParam);

		m_ParamArray.SetAtGrow(nViewID, pParam);
		m_bOwnParamArray.SetAtGrow(nViewID, (BYTE) bMustDelete);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -