propset.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:6k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // propset.h : interface of the CProperty, CPropertySection, and CPropertSet classes
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //  Property setting
  21. typedef struct tagSECTIONHEADER
  22. {
  23. DWORD       cbSection ;
  24. DWORD       cProperties ;  // Number of props.
  25. } SECTIONHEADER, *LPSECTIONHEADER ;
  26. typedef struct tagPROPERTYIDOFFSET
  27. {
  28. DWORD       propertyID;
  29. DWORD       dwOffset;
  30. } PROPERTYIDOFFSET, *LPPROPERTYIDOFFSET;
  31. typedef struct tagPROPHEADER
  32. {
  33. WORD        wByteOrder ;    // Always 0xFFFE
  34. WORD        wFormat ;       // Always 0
  35. DWORD       dwOSVer ;       // System version
  36. CLSID       clsID ;         // Application CLSID
  37. DWORD       cSections ;     // Number of sections (must be at least 1)
  38. } PROPHEADER, *LPPROPHEADER ;
  39. typedef struct tagFORMATIDOFFSET
  40. {
  41. GUID        formatID;
  42. DWORD       dwOffset;
  43. } FORMATIDOFFSET, *LPFORMATIDOFFSET;
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CProperty
  46. class CProperty : public CObject
  47. {
  48. friend class CPropertySet ;
  49. friend class CPropertySection ;
  50. public:
  51. // Construction
  52. CProperty( void ) ;
  53. CProperty( DWORD dwID, const LPVOID pValue, DWORD dwType ) ;
  54. // Attributes
  55. BOOL    Set( DWORD dwID, const LPVOID pValue, DWORD dwType ) ;
  56. BOOL    Set( const LPVOID pValue, DWORD dwType ) ;
  57. BOOL    Set( const LPVOID pValue ) ;
  58. LPVOID  Get( DWORD* pcb ) ;     // Returns pointer to actual value
  59. LPVOID  Get( void ) ;           // Returns pointer to actual value
  60. DWORD   GetType( void ) ;       // Returns property type
  61. void    SetType( DWORD dwType ) ;
  62. DWORD   GetID( void ) ;
  63. void    SetID( DWORD dwPropID ) ;
  64. LPVOID  GetRawValue( void ) ;   // Returns pointer internal value (may
  65.                                 // include size information)
  66. // Operations
  67. BOOL    WriteToStream( IStream* pIStream ) ;
  68. BOOL    ReadFromStream( IStream* pIStream ) ;
  69. private:
  70. DWORD       m_dwPropID ;
  71. DWORD       m_dwType ;
  72. LPVOID      m_pValue ;
  73. LPVOID  AllocValue(ULONG cb);
  74. void    FreeValue();
  75. public:
  76. ~CProperty() ;
  77. } ;
  78. /////////////////////////////////////////////////////////////////////////////
  79. // CPropertySection
  80. class CPropertySection : public CObject
  81. {
  82. friend class CPropertySet ;
  83. friend class CProperty ;
  84. public:
  85. // Construction
  86. CPropertySection( void ) ;
  87. CPropertySection( CLSID FormatID ) ;
  88. // Attributes
  89. CLSID   GetFormatID( void ) ;
  90. void    SetFormatID( CLSID FormatID ) ;
  91. BOOL    Set( DWORD dwPropID, LPVOID pValue, DWORD dwType ) ;
  92. BOOL    Set( DWORD dwPropID, LPVOID pValue ) ;
  93. LPVOID  Get( DWORD dwPropID, DWORD* pcb ) ;
  94. LPVOID  Get( DWORD dwPropID ) ;
  95. void    Remove( DWORD dwPropID ) ;
  96. void    RemoveAll() ;
  97. CProperty* GetProperty( DWORD dwPropID ) ;
  98. void AddProperty( CProperty* pProp ) ;
  99. DWORD   GetSize( void ) ;
  100. DWORD   GetCount( void ) ;
  101. CObList* GetList( void ) ;
  102. BOOL    GetID( LPCTSTR pszName, DWORD* pdwPropID ) ;
  103. BOOL    SetName( DWORD dwPropID, LPCTSTR pszName ) ;
  104. BOOL    SetSectionName( LPCTSTR pszName );
  105. LPCTSTR GetSectionName( void );
  106. // Operations
  107. BOOL    WriteToStream( IStream* pIStream ) ;
  108. BOOL    ReadFromStream( IStream* pIStream, LARGE_INTEGER liPropSet ) ;
  109. BOOL    WriteNameDictToStream( IStream* pIStream ) ;
  110. BOOL    ReadNameDictFromStream( IStream* pIStream ) ;
  111. private:
  112. // Implementation
  113. CLSID           m_FormatID ;
  114. SECTIONHEADER   m_SH ;
  115. // List of properties (CProperty)
  116. CObList         m_PropList ;
  117. // Dictionary of property names
  118. CMapStringToPtr m_NameDict ;
  119. CString         m_strSectionName;
  120. public:
  121. ~CPropertySection();
  122. } ;
  123. /////////////////////////////////////////////////////////////////////////////
  124. // CPropertySet
  125. class CPropertySet : public CObject
  126. {
  127. friend class CPropertySection ;
  128. friend class CProperty ;
  129. public:
  130. // Construction
  131. CPropertySet( void ) ;
  132. CPropertySet( CLSID clsID )  ;
  133. // Attributes
  134. BOOL    Set( CLSID FormatID, DWORD dwPropID, LPVOID pValue, DWORD dwType ) ;
  135. BOOL    Set( CLSID FormatID, DWORD dwPropID, LPVOID pValue ) ;
  136. LPVOID  Get( CLSID FormatID, DWORD dwPropID, DWORD* pcb ) ;
  137. LPVOID  Get( CLSID FormatID, DWORD dwPropID ) ;
  138. void    Remove( CLSID FormatID, DWORD dwPropID ) ;
  139. void    Remove( CLSID FormatID ) ;
  140. void    RemoveAll( ) ;
  141. CProperty* GetProperty( CLSID FormatID, DWORD dwPropID ) ;
  142. void AddProperty( CLSID FormatID, CProperty* pProp ) ;
  143. CPropertySection* GetSection( CLSID FormatID ) ;
  144. CPropertySection* AddSection( CLSID FormatID ) ;
  145. void AddSection( CPropertySection* psect ) ;
  146. WORD    GetByteOrder( void ) ;
  147. WORD    GetFormatVersion( void ) ;
  148. void    SetFormatVersion( WORD wFmtVersion ) ;
  149. DWORD   GetOSVersion( void ) ;
  150. void    SetOSVersion( DWORD dwOSVer ) ;
  151. CLSID   GetClassID( void ) ;
  152. void    SetClassID( CLSID clsid ) ;
  153. DWORD   GetCount( void ) ;
  154. CObList* GetList( void ) ;
  155. // Operations
  156. BOOL    WriteToStream( IStream* pIStream ) ;
  157. BOOL    ReadFromStream( IStream* pIStream ) ;
  158. // Implementation
  159. private:
  160. PROPHEADER      m_PH ;
  161. CObList         m_SectionList ;
  162. public:
  163. ~CPropertySet();
  164. } ;