FXRECDOC.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // fxrecdoc.h : interface of the CFixedLenRecDoc and CFixedLenRecHint classes
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 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 related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. // CFixedLenRecDoc implements the behavior of a transaction-based
  13. // document in which each record has a fixed size.  The file has
  14. // a fixed-length header.  The derived class can specify the length
  15. // of an extra header, that is, a header in addition to that required
  16. // by CFixedLenRecDoc.  This is an abstract class that must be
  17. // derived from.
  18. class CFixedLenRecHint : public CObject
  19. {
  20. DECLARE_DYNAMIC(CFixedLenRecHint)
  21. public:
  22. CFixedLenRecHint();
  23. };
  24. class CFixedLenRecDoc : public CDocument
  25. {
  26. DECLARE_DYNAMIC(CFixedLenRecDoc)
  27. public:
  28. CFixedLenRecDoc();
  29. protected:
  30. CFile m_file;       // The file is kept open to do read/writes on per
  31. // transaction basis.
  32. // The following header, and optional extra header implemented
  33. // in the derived class, are updated each time a new record is
  34. // added, or WriteHeader() is called.
  35. struct
  36. {
  37. UINT nRecordCount;          // count of records in the file
  38. UINT nRecordLength;         // length of fixed-length records
  39. UINT nExtraHeaderLength;    // length of additional header written
  40. // by derived class
  41. } m_header;
  42. // Overridables
  43. virtual void* OnCreateNewRecord(int nNewRecordIndex) = 0;
  44. // returns pointer to new record
  45. virtual BOOL OnReadExtraHeader(CFile* pFile);
  46. virtual void OnWriteExtraHeader(CFile* pFile, BOOL bNewHeader);
  47. // Operations
  48. public:
  49. virtual void WriteHeader(CFile* pFile, BOOL bNewHeader);
  50. virtual BOOL ReadHeader(CFile* pFile);
  51. // returns FALSE if file can't be interpreted
  52. // Operations used by views
  53. virtual UINT CreateNewRecord(); // creates a new record
  54. UINT GetRecordCount()
  55. { return m_header.nRecordCount; }
  56. virtual void GetRecord(UINT nRecordIndex, void* pRecord);
  57. virtual void UpdateRecord(CView* pSourceView, UINT nRecordIndex,
  58. void* pRecord);
  59. virtual void UpdateAllViewsWithRecord(CView* pSourceView,
  60. UINT nRecordIndex);
  61. // Implementation
  62. protected:
  63. // Overrides of CDocument member functions
  64. virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
  65. // reopen file using m_file
  66. virtual void DeleteContents();  // closes the m_file
  67. virtual void FileSeekRecord(UINT nRecord);
  68. public:
  69. virtual ~CFixedLenRecDoc();
  70. virtual void Serialize(CArchive& ar);
  71. };