PROPSET.H
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:6k
源码类别:

界面编程

开发平台:

Visual C++

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