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

Windows编程

开发平台:

Visual C++

  1. // propset.h : interface of the CProperty, CPropertySection, and CPropertSet 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. //  Property setting
  13. typedef struct tagSECTIONHEADER
  14. {
  15. DWORD       cbSection ;
  16. DWORD       cProperties ;  // Number of props.
  17. } SECTIONHEADER, *LPSECTIONHEADER ;
  18. typedef struct tagPROPERTYIDOFFSET
  19. {
  20. DWORD       propertyID;
  21. DWORD       dwOffset;
  22. } PROPERTYIDOFFSET, *LPPROPERTYIDOFFSET;
  23. typedef struct tagPROPHEADER
  24. {
  25. WORD        wByteOrder ;    // Always 0xFFFE
  26. WORD        wFormat ;       // Always 0
  27. DWORD       dwOSVer ;       // System version
  28. CLSID       clsID ;         // Application CLSID
  29. DWORD       cSections ;     // Number of sections (must be at least 1)
  30. } PROPHEADER, *LPPROPHEADER ;
  31. typedef struct tagFORMATIDOFFSET
  32. {
  33. GUID        formatID;
  34. DWORD       dwOffset;
  35. } FORMATIDOFFSET, *LPFORMATIDOFFSET;
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CProperty
  38. class CProperty : public CObject
  39. {
  40. friend class CPropertySet ;
  41. friend class CPropertySection ;
  42. public:
  43. // Construction
  44. CProperty( void ) ;
  45. CProperty( DWORD dwID, const LPVOID pValue, DWORD dwType ) ;
  46. // Attributes
  47. BOOL    Set( DWORD dwID, const LPVOID pValue, DWORD dwType ) ;
  48. BOOL    Set( const LPVOID pValue, DWORD dwType ) ;
  49. BOOL    Set( const LPVOID pValue ) ;
  50. LPVOID  Get( DWORD* pcb ) ;     // Returns pointer to actual value
  51. LPVOID  Get( void ) ;           // Returns pointer to actual value
  52. DWORD   GetType( void ) ;       // Returns property type
  53. void    SetType( DWORD dwType ) ;
  54. DWORD   GetID( void ) ;
  55. void    SetID( DWORD dwPropID ) ;
  56. LPVOID  GetRawValue( void ) ;   // Returns pointer internal value (may
  57. // include size information)
  58. // Operations
  59. BOOL    WriteToStream( IStream* pIStream ) ;
  60. BOOL    ReadFromStream( IStream* pIStream ) ;
  61. private:
  62. DWORD       m_dwPropID ;
  63. DWORD       m_dwType ;
  64. LPVOID      m_pValue ;
  65. LPVOID  AllocValue(ULONG cb);
  66. void    FreeValue();
  67. public:
  68. ~CProperty() ;
  69. } ;
  70. /////////////////////////////////////////////////////////////////////////////
  71. // CPropertySection
  72. class CPropertySection : public CObject
  73. {
  74. friend class CPropertySet ;
  75. friend class CProperty ;
  76. public:
  77. // Construction
  78. CPropertySection( void ) ;
  79. CPropertySection( CLSID FormatID ) ;
  80. // Attributes
  81. CLSID   GetFormatID( void ) ;
  82. void    SetFormatID( CLSID FormatID ) ;
  83. BOOL    Set( DWORD dwPropID, LPVOID pValue, DWORD dwType ) ;
  84. BOOL    Set( DWORD dwPropID, LPVOID pValue ) ;
  85. LPVOID  Get( DWORD dwPropID, DWORD* pcb ) ;
  86. LPVOID  Get( DWORD dwPropID ) ;
  87. void    Remove( DWORD dwPropID ) ;
  88. void    RemoveAll() ;
  89. CProperty* GetProperty( DWORD dwPropID ) ;
  90. void AddProperty( CProperty* pProp ) ;
  91. DWORD   GetSize( void ) ;
  92. DWORD   GetCount( void ) ;
  93. CObList* GetList( void ) ;
  94. BOOL    GetID( LPCTSTR pszName, DWORD* pdwPropID ) ;
  95. BOOL    SetName( DWORD dwPropID, LPCTSTR pszName ) ;
  96. BOOL    SetSectionName( LPCTSTR pszName );
  97. LPCTSTR GetSectionName( void );
  98. // Operations
  99. BOOL    WriteToStream( IStream* pIStream ) ;
  100. BOOL    ReadFromStream( IStream* pIStream, LARGE_INTEGER liPropSet ) ;
  101. BOOL    WriteNameDictToStream( IStream* pIStream ) ;
  102. BOOL    ReadNameDictFromStream( IStream* pIStream ) ;
  103. private:
  104. // Implementation
  105. CLSID           m_FormatID ;
  106. SECTIONHEADER   m_SH ;
  107. // List of properties (CProperty)
  108. CObList         m_PropList ;
  109. // Dictionary of property names
  110. CMapStringToPtr m_NameDict ;
  111. CString         m_strSectionName;
  112. public:
  113. ~CPropertySection();
  114. } ;
  115. /////////////////////////////////////////////////////////////////////////////
  116. // CPropertySet
  117. class CPropertySet : public CObject
  118. {
  119. friend class CPropertySection ;
  120. friend class CProperty ;
  121. public:
  122. // Construction
  123. CPropertySet( void ) ;
  124. CPropertySet( CLSID clsID )  ;
  125. // Attributes
  126. BOOL    Set( CLSID FormatID, DWORD dwPropID, LPVOID pValue, DWORD dwType ) ;
  127. BOOL    Set( CLSID FormatID, DWORD dwPropID, LPVOID pValue ) ;
  128. LPVOID  Get( CLSID FormatID, DWORD dwPropID, DWORD* pcb ) ;
  129. LPVOID  Get( CLSID FormatID, DWORD dwPropID ) ;
  130. void    Remove( CLSID FormatID, DWORD dwPropID ) ;
  131. void    Remove( CLSID FormatID ) ;
  132. void    RemoveAll( ) ;
  133. CProperty* GetProperty( CLSID FormatID, DWORD dwPropID ) ;
  134. void AddProperty( CLSID FormatID, CProperty* pProp ) ;
  135. CPropertySection* GetSection( CLSID FormatID ) ;
  136. CPropertySection* AddSection( CLSID FormatID ) ;
  137. void AddSection( CPropertySection* psect ) ;
  138. WORD    GetByteOrder( void ) ;
  139. WORD    GetFormatVersion( void ) ;
  140. void    SetFormatVersion( WORD wFmtVersion ) ;
  141. DWORD   GetOSVersion( void ) ;
  142. void    SetOSVersion( DWORD dwOSVer ) ;
  143. CLSID   GetClassID( void ) ;
  144. void    SetClassID( CLSID clsid ) ;
  145. DWORD   GetCount( void ) ;
  146. CObList* GetList( void ) ;
  147. // Operations
  148. BOOL    WriteToStream( IStream* pIStream ) ;
  149. BOOL    ReadFromStream( IStream* pIStream ) ;
  150. // Implementation
  151. private:
  152. PROPHEADER      m_PH ;
  153. CObList         m_SectionList ;
  154. public:
  155. ~CPropertySet();
  156. } ;