dataobj.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. //*******************************************************************************************
  2. //
  3. // Filename : DataObj.h
  4. //
  5. // Definition of CCabObj
  6. //
  7. // Copyright (c) 1994 - 1996 Microsoft Corporation. All rights reserved
  8. //
  9. //*******************************************************************************************
  10. #ifndef _DATAOBJ_H_
  11. #define _DATAOBJ_H_
  12. #include "thisguid.h"
  13. class CCabObj : public IDataObject, public IPersistStream
  14. {
  15. public:
  16. CCabObj(HWND hwndOwner, CCabFolder *pcf, LPCABITEM *apit, UINT cpit);
  17. ~CCabObj();
  18. STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
  19. STDMETHODIMP_(ULONG) AddRef();
  20. STDMETHODIMP_(ULONG) Release();
  21.         
  22. STDMETHODIMP GetData(FORMATETC *pformatetcIn, STGMEDIUM *pmedium);
  23. STDMETHODIMP GetDataHere(FORMATETC *pformatetc, STGMEDIUM *pmedium);
  24. STDMETHODIMP QueryGetData(FORMATETC *pformatetc);
  25. STDMETHODIMP GetCanonicalFormatEtc(FORMATETC *pformatectIn, FORMATETC *pformatetcOut);
  26. STDMETHODIMP SetData(FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease);
  27. STDMETHODIMP EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc);
  28. STDMETHODIMP DAdvise(FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink,
  29. DWORD *pdwConnection);
  30. STDMETHODIMP DUnadvise(DWORD dwConnection);
  31. STDMETHODIMP EnumDAdvise(IEnumSTATDATA **ppenumAdvise);
  32.     // *** IPersist ***
  33.     STDMETHODIMP GetClassID(CLSID* pClassID){ *pClassID = CLSID_CabViewDataObject; return S_OK; }
  34.     
  35.     // *** IPersistStream ***
  36.     STDMETHODIMP IsDirty(void) {return S_OK;} // Indicate that we are dirty and ::Save() needs to be called.
  37.     STDMETHODIMP Load(IStream *pStm);
  38.     STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
  39.     STDMETHODIMP GetSizeMax(ULARGE_INTEGER * pcbSize);
  40. private:
  41. BOOL InitFileGroupDesc();
  42. BOOL InitFileContents();
  43. BOOL InitPersistedDataObject();
  44. static HGLOBAL * CALLBACK ShouldExtract(LPCTSTR pszFile, DWORD dwSize,
  45. UINT date, UINT time, UINT attribs, LPARAM lParam);
  46. HRESULT InitContents();
  47. friend HRESULT CabViewDataObject_CreateInstance(REFIID riid, LPVOID* ppv);
  48. CCabObj();
  49. private:
  50. static UINT s_uFileGroupDesc;
  51. static UINT s_uFileContents;
  52. static UINT s_uPersistedDataObject;
  53. CRefCount m_cRef;
  54. CRefDll m_cRefDll;
  55. CCabItemList m_lSel;
  56. HGLOBAL *m_lContents;
  57. CCabFolder *m_pcfHere;
  58. HWND m_hwndOwner;
  59. } ;
  60. #endif // _DATAOBJ_H_