Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

172 lines
4.9 KiB

  1. #if !defined(AFX_SNAPINDATAOBJECT_H__7D4A685F_9056_11D2_BD45_0000F87A3912__INCLUDED_)
  2. #define AFX_SNAPINDATAOBJECT_H__7D4A685F_9056_11D2_BD45_0000F87A3912__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // SnapinDataObject.h : header file
  7. //
  8. class CScopePaneItem;
  9. class CResultsPaneItem;
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CSnapinDataObject command target
  12. class CSnapinDataObject : public CCmdTarget
  13. {
  14. DECLARE_DYNCREATE(CSnapinDataObject)
  15. // Construction/Destruction
  16. public:
  17. CSnapinDataObject();
  18. virtual ~CSnapinDataObject();
  19. // Clipboard Members
  20. protected:
  21. bool RegisterClipboardFormats();
  22. static UINT s_cfInternal;
  23. static UINT s_cfExtension;
  24. UINT m_cfDisplayName;
  25. UINT m_cfSPIGuid;
  26. UINT m_cfSnapinCLSID;
  27. // Item Members
  28. public:
  29. DATA_OBJECT_TYPES GetItemType();
  30. ULONG GetCookie();
  31. bool GetItem(CScopePaneItem*& pSPItem);
  32. bool GetItem(CResultsPaneItem*& pRPItem);
  33. void SetItem(CScopePaneItem* pSPItem);
  34. void SetItem(CResultsPaneItem* pRPItem);
  35. protected:
  36. ULONG m_ulCookie;
  37. DATA_OBJECT_TYPES m_ItemType;
  38. // DataObject Members
  39. public:
  40. static CSnapinDataObject* GetSnapinDataObject(LPDATAOBJECT lpDataObject);
  41. protected:
  42. static HRESULT GetDataObject(LPDATAOBJECT lpDataObject, UINT cfClipFormat, ULONG nByteCount, HGLOBAL* phGlobal);
  43. // Write Members
  44. protected:
  45. HRESULT WriteGuid(LPSTREAM pStream);
  46. HRESULT WriteDisplayName(LPSTREAM pStream);
  47. HRESULT WriteSnapinCLSID(LPSTREAM pStream);
  48. HRESULT WriteDataObject(LPSTREAM pStream);
  49. HRESULT WriteExtensionData(LPSTREAM pStream);
  50. // MFC Operations
  51. public:
  52. // Overrides
  53. // ClassWizard generated virtual function overrides
  54. //{{AFX_VIRTUAL(CSnapinDataObject)
  55. public:
  56. virtual void OnFinalRelease();
  57. //}}AFX_VIRTUAL
  58. // MFC Implementation
  59. protected:
  60. // Generated message map functions
  61. //{{AFX_MSG(CSnapinDataObject)
  62. // NOTE - the ClassWizard will add and remove member functions here.
  63. //}}AFX_MSG
  64. DECLARE_MESSAGE_MAP()
  65. DECLARE_OLECREATE_EX(CSnapinDataObject)
  66. // Generated OLE dispatch map functions
  67. //{{AFX_DISPATCH(CSnapinDataObject)
  68. // NOTE - the ClassWizard will add and remove member functions here.
  69. //}}AFX_DISPATCH
  70. DECLARE_DISPATCH_MAP()
  71. DECLARE_INTERFACE_MAP()
  72. ////////////////////////////////
  73. // IDataObject Interface Part
  74. BEGIN_INTERFACE_PART(DataObject,IDataObject)
  75. virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData(
  76. /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
  77. /* [out] */ STGMEDIUM __RPC_FAR *pmedium);
  78. virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDataHere(
  79. /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
  80. /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium);
  81. virtual HRESULT STDMETHODCALLTYPE QueryGetData(
  82. /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc);
  83. virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(
  84. /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
  85. /* [out] */ FORMATETC __RPC_FAR *pformatetcOut);
  86. virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetData(
  87. /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
  88. /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
  89. /* [in] */ BOOL fRelease);
  90. virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(
  91. /* [in] */ DWORD dwDirection,
  92. /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc);
  93. virtual HRESULT STDMETHODCALLTYPE DAdvise(
  94. /* [in] */ FORMATETC __RPC_FAR *pformatetc,
  95. /* [in] */ DWORD advf,
  96. /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
  97. /* [out] */ DWORD __RPC_FAR *pdwConnection);
  98. virtual HRESULT STDMETHODCALLTYPE DUnadvise(
  99. /* [in] */ DWORD dwConnection);
  100. virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(
  101. /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
  102. END_INTERFACE_PART(DataObject)
  103. };
  104. /////////////////////////////////////////////////////////////////////////////
  105. /////////////////////////////////////////////////////////////////////////////
  106. // CEnumFormatEtc
  107. class CEnumFormatEtc : public IEnumFORMATETC
  108. {
  109. private:
  110. ULONG m_cRef; //Object reference count
  111. ULONG m_iCur; //Current element.
  112. ULONG m_cfe; //Number of FORMATETCs in us
  113. LPFORMATETC m_prgfe; //Source of FORMATETCs
  114. public:
  115. CEnumFormatEtc(ULONG, LPFORMATETC);
  116. ~CEnumFormatEtc(void);
  117. //IUnknown members
  118. STDMETHODIMP QueryInterface(REFIID, VOID **);
  119. STDMETHODIMP_(ULONG) AddRef(void);
  120. STDMETHODIMP_(ULONG) Release(void);
  121. //IEnumFORMATETC members
  122. STDMETHODIMP Next(ULONG, LPFORMATETC, ULONG *);
  123. STDMETHODIMP Skip(ULONG);
  124. STDMETHODIMP Reset(void);
  125. STDMETHODIMP Clone(IEnumFORMATETC **);
  126. };
  127. typedef CEnumFormatEtc *PCEnumFormatEtc;
  128. /////////////////////////////////////////////////////////////////////////////
  129. //{{AFX_INSERT_LOCATION}}
  130. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  131. #endif // !defined(AFX_SNAPINDATAOBJECT_H__7D4A685F_9056_11D2_BD45_0000F87A3912__INCLUDED_)