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

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef __dataobj_h
  2. #define __dataobj_h
  3. /*-----------------------------------------------------------------------------
  4. / Registered clipboard formats
  5. /----------------------------------------------------------------------------*/
  6. #define MDCF_SHELLIDLIST            0
  7. #define MDCF_SHELLDESCRIPTORSA      1
  8. #define MDCF_SHELLDESCRIPTORSW      2
  9. #define MDCF_SHELLOFFSETS           3
  10. #define MDCF_MAX                    3
  11. extern UINT g_clipboardFormats[MDCF_MAX];
  12. #define g_cfShellIDList          g_clipboardFormats[MDCF_SHELLIDLIST]
  13. #define g_cfFileDescriptorsA     g_clipboardFormats[MDCF_SHELLDESCRIPTORSA]
  14. #define g_cfFileDescriptorsW     g_clipboardFormats[MDCF_SHELLDESCRIPTORSW]
  15. #define g_cfOffsets              g_clipboardFormats[MDCF_SHELLOFFSETS]
  16. void RegisterMyDocsClipboardFormats(void);
  17. /*-----------------------------------------------------------------------------
  18. / CMyDocsDataObject
  19. /----------------------------------------------------------------------------*/
  20. class CMyDocsDataObject : public IDataObject, CUnknown
  21. {
  22.     private:
  23.         LPCITEMIDLIST m_pidlRoot;
  24.         LPCITEMIDLIST m_pidlShellRoot;
  25.         HDPA          m_hdpaSpecial;
  26.         HDPA          m_hdpaShell;
  27.         LPTSTR        m_rootPath;
  28.         STGMEDIUM     m_OffsetsMedium;
  29.         STGMEDIUM *   m_pOffsetsMedium;
  30.         IDataObject * m_pdo;
  31.     public:
  32.         CMyDocsDataObject(IShellFolder * psf, LPCITEMIDLIST pidlRoot, LPCITEMIDLIST pidlReal, INT cidl, LPCITEMIDLIST* aidl);
  33.         ~CMyDocsDataObject();
  34.         // IUnknown
  35.         STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObject);
  36.         STDMETHOD_(ULONG, AddRef)();
  37.         STDMETHOD_(ULONG, Release)();
  38.         // IDataObject
  39.         STDMETHODIMP GetData(FORMATETC *pformatetcIn, STGMEDIUM *pmedium);
  40.         STDMETHODIMP GetDataHere(FORMATETC *pformatetc, STGMEDIUM *pmedium);
  41.         STDMETHODIMP QueryGetData(FORMATETC *pformatetc);
  42.         STDMETHODIMP GetCanonicalFormatEtc(FORMATETC *pformatectIn, FORMATETC *pformatetcOut);
  43.         STDMETHODIMP SetData(FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease);
  44.         STDMETHODIMP EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc);
  45.         STDMETHODIMP DAdvise(FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection);
  46.         STDMETHODIMP DUnadvise(DWORD dwConnection);
  47.         STDMETHODIMP EnumDAdvise(IEnumSTATDATA **ppenumAdvise);
  48. };
  49. /*-----------------------------------------------------------------------------
  50. / CMyDocsEnumFormatETC
  51. /----------------------------------------------------------------------------*/
  52. class CMyDocsEnumFormatETC : public IEnumFORMATETC, CUnknown
  53. {
  54.     private:
  55.         INT m_index;
  56.         IEnumFORMATETC * m_pefe;
  57.     public:
  58.         CMyDocsEnumFormatETC( IDataObject * pdo );
  59.         ~CMyDocsEnumFormatETC();
  60.         // IUnknown
  61.         STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObject);
  62.         STDMETHOD_(ULONG, AddRef)();
  63.         STDMETHOD_(ULONG, Release)();
  64.         // IEnumIDList
  65.         STDMETHODIMP Next(ULONG celt, FORMATETC* rgelt, ULONG* pceltFetched);
  66.         STDMETHODIMP Skip(ULONG celt);
  67.         STDMETHODIMP Reset();
  68.         STDMETHODIMP Clone(LPENUMFORMATETC* ppenum);
  69. };
  70. #endif