File:  [WindowsNT SDKs] / mstools / mfc / samples / chart / dobject.cpp
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 18:21:00 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: ntsdk-oct-1992, ntsdk-jun-1992, ntsdk-jul-1993, HEAD
Microsoft Windows NT Build 297 06-28-1992

// dobject.cpp : Defines the class behaviors for the Chart data objects.
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// QuickHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
//

#include "chart.h"

/////////////////////////////////////////////////////////////////////////////
// CChartObject

// CChartObject is a container class of the chart's title and list of
// data points in the graph.  The list is a CObList (see afxcoll.h)
// of CChartData points.

IMPLEMENT_SERIAL(CChartObject, CObject, 0)

// Constructor:
// Creates the list for the CChartData objects
//
CChartObject::CChartObject()
{
	m_pChartData = new CObList;
	m_nType = IDM_BAR;
	m_bDirty = FALSE;
}


// Destructor:
// Delete all the contents, too.
//
CChartObject::~CChartObject()
{
	// Removes & Deletes all objects contained in the chart data list
	//
	RemoveAll();        
	delete m_pChartData;
}

// Serialize:
//
void CChartObject::Serialize(CArchive& ar)
{
	// Serialize the base object first.
	//
	CObject::Serialize(ar);

	// Input or output our items to the archive.
	//
	if(ar.IsStoring())
	{
		ar << m_Title;
		ar << m_pChartData;
		ar << m_nType;
	}
	else
	{
		RemoveAll();
		delete m_pChartData;
			// Delete old data before reading in new data
		ar >> m_Title;
		ar >> m_pChartData;
		ar >> m_nType;
	}
}

// RemoveAll:
// A quick way of clearing all of the elements in the m_pChartData member.
//
void CChartObject::RemoveAll()
{
	if (m_pChartData != NULL)
	{
		if (m_pChartData->GetCount() > 0)
		{
			// Delete the elements.
			//
			while (!m_pChartData->IsEmpty())
			{
				CChartData* ptr;
				ptr = (CChartData*)m_pChartData->RemoveHead();
				delete ptr;
			}

			// Delete all the list's pointers to the now deleted elements.
			//
			m_pChartData->RemoveAll();
		}
	}
}

/////////////////////////////////////////////////////////////////////////////
// CChartData

// CChartData is a data point for the chart.  It contains two fields.
// The height is the value of the data point and szName is the label
// for the data point.

IMPLEMENT_SERIAL(CChartData, CObject, 0)

// Serialize:
//
void CChartData::Serialize(CArchive& ar)
{
	// Serialize the base object first.
	//
	CObject::Serialize(ar);
	
	// Input or output our items to the archive.
	//
	if(ar.IsStoring())
	{
		ar << (WORD)height;
		ar << szName;
	}
	else
	{
		WORD tmp;
		CString name;
		ar >> tmp;
		height = (short)tmp;
		ar >> name;
		strcpy(szName,name);
	}
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.