|
|
1.1 ! root 1: // dobject.cpp : Defines the class behaviors for the Chart data objects. ! 2: // ! 3: // This is a part of the Microsoft Foundation Classes C++ library. ! 4: // Copyright (C) 1992 Microsoft Corporation ! 5: // All rights reserved. ! 6: // ! 7: // This source code is only intended as a supplement to the ! 8: // Microsoft Foundation Classes Reference and Microsoft ! 9: // QuickHelp documentation provided with the library. ! 10: // See these sources for detailed information regarding the ! 11: // Microsoft Foundation Classes product. ! 12: // ! 13: ! 14: #include "chart.h" ! 15: ! 16: ///////////////////////////////////////////////////////////////////////////// ! 17: // CChartObject ! 18: ! 19: // CChartObject is a container class of the chart's title and list of ! 20: // data points in the graph. The list is a CObList (see afxcoll.h) ! 21: // of CChartData points. ! 22: ! 23: IMPLEMENT_SERIAL(CChartObject, CObject, 0) ! 24: ! 25: // Constructor: ! 26: // Creates the list for the CChartData objects ! 27: // ! 28: CChartObject::CChartObject() ! 29: { ! 30: m_pChartData = new CObList; ! 31: m_nType = IDM_BAR; ! 32: m_bDirty = FALSE; ! 33: } ! 34: ! 35: ! 36: // Destructor: ! 37: // Delete all the contents, too. ! 38: // ! 39: CChartObject::~CChartObject() ! 40: { ! 41: // Removes & Deletes all objects contained in the chart data list ! 42: // ! 43: RemoveAll(); ! 44: delete m_pChartData; ! 45: } ! 46: ! 47: // Serialize: ! 48: // ! 49: void CChartObject::Serialize(CArchive& ar) ! 50: { ! 51: // Serialize the base object first. ! 52: // ! 53: CObject::Serialize(ar); ! 54: ! 55: // Input or output our items to the archive. ! 56: // ! 57: if(ar.IsStoring()) ! 58: { ! 59: ar << m_Title; ! 60: ar << m_pChartData; ! 61: ar << m_nType; ! 62: } ! 63: else ! 64: { ! 65: RemoveAll(); ! 66: delete m_pChartData; ! 67: // Delete old data before reading in new data ! 68: ar >> m_Title; ! 69: ar >> m_pChartData; ! 70: ar >> m_nType; ! 71: } ! 72: } ! 73: ! 74: // RemoveAll: ! 75: // A quick way of clearing all of the elements in the m_pChartData member. ! 76: // ! 77: void CChartObject::RemoveAll() ! 78: { ! 79: if (m_pChartData != NULL) ! 80: { ! 81: if (m_pChartData->GetCount() > 0) ! 82: { ! 83: // Delete the elements. ! 84: // ! 85: while (!m_pChartData->IsEmpty()) ! 86: { ! 87: CChartData* ptr; ! 88: ptr = (CChartData*)m_pChartData->RemoveHead(); ! 89: delete ptr; ! 90: } ! 91: ! 92: // Delete all the list's pointers to the now deleted elements. ! 93: // ! 94: m_pChartData->RemoveAll(); ! 95: } ! 96: } ! 97: } ! 98: ! 99: ///////////////////////////////////////////////////////////////////////////// ! 100: // CChartData ! 101: ! 102: // CChartData is a data point for the chart. It contains two fields. ! 103: // The height is the value of the data point and szName is the label ! 104: // for the data point. ! 105: ! 106: IMPLEMENT_SERIAL(CChartData, CObject, 0) ! 107: ! 108: // Serialize: ! 109: // ! 110: void CChartData::Serialize(CArchive& ar) ! 111: { ! 112: // Serialize the base object first. ! 113: // ! 114: CObject::Serialize(ar); ! 115: ! 116: // Input or output our items to the archive. ! 117: // ! 118: if(ar.IsStoring()) ! 119: { ! 120: ar << (WORD)height; ! 121: ar << szName; ! 122: } ! 123: else ! 124: { ! 125: WORD tmp; ! 126: CString name; ! 127: ar >> tmp; ! 128: height = (short)tmp; ! 129: ar >> name; ! 130: strcpy(szName,name); ! 131: } ! 132: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.