EnumFORMATETC.h
上传用户:hy_wanghao
上传日期:2007-01-08
资源大小:279k
文件大小:3k
源码类别:

Shell编程

开发平台:

Visual C++

  1. #if !defined(AFX_ENUMFORMATETC_H__20001229_075F_904E_7D1B_0080AD509054__INCLUDED_)
  2. #define AFX_ENUMFORMATETC_H__20001229_075F_904E_7D1B_0080AD509054__INCLUDED_
  3. #pragma once
  4. #include "Misc.h"
  5. /////////////////////////////////////////////////////////////////////////////
  6. // CEnumFORMATETC
  7. class ATL_NO_VTABLE CEnumFORMATETC : 
  8.    public CComObjectRootEx<CComSingleThreadModel>, 
  9.    public IEnumFORMATETC
  10. {
  11. public:
  12. DECLARE_NOT_AGGREGATABLE(CEnumFORMATETC)
  13. BEGIN_COM_MAP(CEnumFORMATETC)
  14.    COM_INTERFACE_ENTRY(IEnumFORMATETC)
  15. END_COM_MAP()
  16.    CEnumFORMATETC() : m_dwEnumPos(0)
  17.    { 
  18.    }
  19.    
  20.    ULONG m_dwEnumPos;
  21.    // IEnumFORMATETC
  22.    STDMETHOD(Next)(ULONG, LPFORMATETC pFormatetc, ULONG *pdwCopied)
  23.    {
  24.       VALIDATE_POINTER(pFormatetc);
  25.       if( pdwCopied!=NULL ) *pdwCopied = 1L;
  26.       m_dwEnumPos++;
  27.       switch( m_dwEnumPos ) {
  28.       case 1:
  29.          pFormatetc->cfFormat = _Module.m_CFSTR_FILEDESCRIPTOR;
  30.          pFormatetc->ptd = NULL;
  31.          pFormatetc->dwAspect = DVASPECT_CONTENT;
  32.          pFormatetc->lindex = -1;
  33.          pFormatetc->tymed = TYMED_HGLOBAL;
  34.          break;
  35.       case 2:
  36.          pFormatetc->cfFormat = _Module.m_CFSTR_FILECONTENTS;
  37.          pFormatetc->ptd = NULL;
  38.          pFormatetc->dwAspect = DVASPECT_CONTENT;
  39.          pFormatetc->lindex = -1;
  40.          pFormatetc->tymed = TYMED_ISTREAM;
  41.          break;
  42.       case 3:
  43.          pFormatetc->cfFormat = _Module.m_CFSTR_PERFORMEDDROPEFFECT;
  44.          pFormatetc->ptd = NULL;
  45.          pFormatetc->dwAspect = DVASPECT_CONTENT;
  46.          pFormatetc->lindex = -1;
  47.          pFormatetc->tymed = TYMED_HGLOBAL;
  48.          break;
  49.       case 4:
  50.          pFormatetc->cfFormat = _Module.m_CFSTR_PASTESUCCEEDED;
  51.          pFormatetc->ptd = NULL;
  52.          pFormatetc->dwAspect = DVASPECT_CONTENT;
  53.          pFormatetc->lindex = -1;
  54.          pFormatetc->tymed = TYMED_HGLOBAL;
  55.          break;
  56.       case 5:
  57.          pFormatetc->cfFormat = _Module.m_CFSTR_PREFERREDDROPEFFECT;
  58.          pFormatetc->ptd = NULL;
  59.          pFormatetc->dwAspect = DVASPECT_CONTENT;
  60.          pFormatetc->lindex = -1;
  61.          pFormatetc->tymed = TYMED_HGLOBAL;
  62.          break;
  63.       default:
  64.          if( pdwCopied!=NULL ) *pdwCopied = 0L;
  65.          return S_FALSE;
  66.       }      
  67.       return S_OK;
  68.    }
  69.    STDMETHOD(Skip)(ULONG n)
  70.    {
  71.       m_dwEnumPos += n;
  72.       return S_OK;
  73.    }
  74.    STDMETHOD(Reset)(void)
  75.    {
  76.       m_dwEnumPos = 0L;
  77.       return S_OK;
  78.    }
  79.    STDMETHOD(Clone)(LPENUMFORMATETC*)
  80.    {
  81.       ATLTRACENOTIMPL(_T("CEnumFORMATETC::Clone"));
  82.    }
  83.    
  84. };
  85. #endif // !defined(AFX_ENUMFORMATETC_H__20001229_075F_904E_7D1B_0080AD509054__INCLUDED_)