File:  [WindowsNT SDKs] / mstools / mfc / samples / tutorial / database.h
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

// database.h : Declares the interfaces for the CDataBase class.
//
// 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.

#ifndef __DATABASE_H__
#define __DATABASE_H__

#include "person.h"

/////////////////////////////////////////////////////////////////////////////

// string const for untitiled database
extern const char szUntitled[];
//////////////////////////////////////////////////
//  CDataBase
//  The database object is intended to encapsulate everything
//  needed to work the the CPersonList into one interface.
//  Exception handling, data manipulations, and searching
//  are handled on this level freeing the view program, whether it
//  is character or windows, to deal with displaying the data.
//
class CDataBase: public CObject
{
public:
	// constructor
	CDataBase()
		{
			m_pDataList = NULL;
			m_pFindList = NULL;
			m_szFileName = "";
			m_szFileTitle = "";
		}

	// Create/Destory CPersonLists
	BOOL New();
	void Terminate();

	// File handling
	BOOL DoOpen( const char* pszFileName );
	BOOL DoSave( const char* pszFileName = NULL );
	BOOL DoFind( const char* pszLastName = NULL );

	// Person Handling
	void AddPerson( CPerson* pNewPerson );
	void ReplacePerson( CPerson* pOldPerson, const CPerson& rNewPerson );
	void DeletePerson( int nIndex );
	CPerson* GetPerson( int nIndex );

	// Database Attributes
	int GetCount()
		{
			ASSERT_VALID( this );
			if ( m_pFindList != NULL )
				return m_pFindList->GetCount();
			if ( m_pDataList != NULL )
				return m_pDataList->GetCount();
			return 0;
		}
			
	BOOL IsDirty()
		{   ASSERT_VALID( this );
			return ( m_pDataList != NULL ) ? m_pDataList->GetDirty() : FALSE; }
			
	BOOL IsNamed()
		{   ASSERT_VALID( this );
			return m_szFileName != szUntitled; }

	const char* GetName()
		{   ASSERT_VALID( this );
			return m_szFileName; }
		
	CString GetTitle()
		{   ASSERT_VALID( this );
			return  "Phone Book - " + m_szFileTitle; }
	void SetTitle( const char* pszTitle )
		{   ASSERT_VALID( this );
			m_szFileTitle = pszTitle; }

	BOOL IsPresent()
		{   ASSERT_VALID( this );
			return m_pDataList != NULL; }
		
protected:
	CPersonList* m_pDataList;
	CPersonList* m_pFindList;
	CString m_szFileName;
	CString m_szFileTitle;

private:
	CPersonList* ReadDataBase( CFile* pFile );
	BOOL WriteDataBase( CFile* pFile );
	
#ifdef _DEBUG
public:
	void AssertValid() const;
#endif
};

/////////////////////////////////////////////////////////////////////////////

#endif // __DATABASE_H__

unix.superglobalmegacorp.com

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