FXRECDOC.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- // fxrecdoc.h : interface of the CFixedLenRecDoc and CFixedLenRecHint classes
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- // CFixedLenRecDoc implements the behavior of a transaction-based
- // document in which each record has a fixed size. The file has
- // a fixed-length header. The derived class can specify the length
- // of an extra header, that is, a header in addition to that required
- // by CFixedLenRecDoc. This is an abstract class that must be
- // derived from.
- class CFixedLenRecHint : public CObject
- {
- DECLARE_DYNAMIC(CFixedLenRecHint)
- public:
- CFixedLenRecHint();
- };
- class CFixedLenRecDoc : public CDocument
- {
- DECLARE_DYNAMIC(CFixedLenRecDoc)
- public:
- CFixedLenRecDoc();
- protected:
- CFile m_file; // The file is kept open to do read/writes on per
- // transaction basis.
- // The following header, and optional extra header implemented
- // in the derived class, are updated each time a new record is
- // added, or WriteHeader() is called.
- struct
- {
- UINT nRecordCount; // count of records in the file
- UINT nRecordLength; // length of fixed-length records
- UINT nExtraHeaderLength; // length of additional header written
- // by derived class
- } m_header;
- // Overridables
- virtual void* OnCreateNewRecord(int nNewRecordIndex) = 0;
- // returns pointer to new record
- virtual BOOL OnReadExtraHeader(CFile* pFile);
- virtual void OnWriteExtraHeader(CFile* pFile, BOOL bNewHeader);
- // Operations
- public:
- virtual void WriteHeader(CFile* pFile, BOOL bNewHeader);
- virtual BOOL ReadHeader(CFile* pFile);
- // returns FALSE if file can't be interpreted
- // Operations used by views
- virtual UINT CreateNewRecord(); // creates a new record
- UINT GetRecordCount()
- { return m_header.nRecordCount; }
- virtual void GetRecord(UINT nRecordIndex, void* pRecord);
- virtual void UpdateRecord(CView* pSourceView, UINT nRecordIndex,
- void* pRecord);
- virtual void UpdateAllViewsWithRecord(CView* pSourceView,
- UINT nRecordIndex);
- // Implementation
- protected:
- // Overrides of CDocument member functions
- virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
- // reopen file using m_file
- virtual void DeleteContents(); // closes the m_file
- virtual void FileSeekRecord(UINT nRecord);
- public:
- virtual ~CFixedLenRecDoc();
- virtual void Serialize(CArchive& ar);
- };