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

Windows Kernel

Development Platform:

Visual C++

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //
  5. //  Copyright (C) Microsoft Corporation, 1997 - 1999
  6. //
  7. //  File:       items.h
  8. //
  9. //--------------------------------------------------------------------------
  10. #ifndef _INC_CSCUI_ITEMS_H
  11. #define _INC_CSCUI_ITEMS_H
  12. #ifndef _INC_SHELL_IDLDATA_H
  13. #   include "idldata.h"
  14. #endif
  15. class COfflineItemsData : public CIDLData
  16. {
  17.     public:
  18.         COfflineItemsData(LPCITEMIDLIST pidlFolder, 
  19.                           UINT cidl, 
  20.                           LPCITEMIDLIST *apidl, 
  21.                           HWND hwndParent,
  22.                           IShellFolder *psfOwner = NULL,
  23.                           IDataObject *pdtInner = NULL);
  24.         ~COfflineItemsData(void);
  25.         STDMETHODIMP GetData(FORMATETC *pFEIn, STGMEDIUM *pstm);
  26.         STDMETHODIMP SetData(FORMATETC *pFEIn, STGMEDIUM *pstm, BOOL fRelease);
  27.         STDMETHODIMP QueryGetData(FORMATETC *pFE);
  28.         static HRESULT CreateInstance(COfflineItemsData **ppOut,
  29.                                       LPCITEMIDLIST pidlFolder, 
  30.                                       UINT cidl, 
  31.                                       LPCITEMIDLIST *apidl, 
  32.                                       HWND hwndParent,
  33.                                       IShellFolder *psfOwner = NULL,
  34.                                       IDataObject *pdtInner = NULL);
  35.         static HRESULT CreateInstance(IDataObject **ppOut,
  36.                                       LPCITEMIDLIST pidlFolder, 
  37.                                       UINT cidl, 
  38.                                       LPCITEMIDLIST *apidl, 
  39.                                       HWND hwndParent,
  40.                                       IShellFolder *psfOwner = NULL,
  41.                                       IDataObject *pdtInner = NULL);
  42.         HRESULT CtorResult(void) const
  43.             { return m_hrCtor; }
  44.     protected:
  45.         HRESULT ProvideFormats(CEnumFormatEtc *pEnumFmtEtc);
  46.     private:
  47.         HWND                m_hwndParent;
  48.         LPCOLID            *m_rgpolid; // Pidls cloned in private format.
  49.         int                 m_cItems;
  50.         HRESULT             m_hrCtor;
  51.         DWORD               m_dwPreferredEffect;
  52.         DWORD               m_dwPerformedEffect;
  53.         DWORD               m_dwLogicalPerformedEffect;
  54.         static CLIPFORMAT m_cfHDROP;
  55.         static CLIPFORMAT m_cfFileContents;
  56.         static CLIPFORMAT m_cfFileDesc;
  57.         static CLIPFORMAT m_cfPreferedEffect;
  58.         static CLIPFORMAT m_cfPerformedEffect;
  59.         static CLIPFORMAT m_cfLogicalPerformedEffect;
  60.         static CLIPFORMAT m_cfDataSrcClsid;
  61.        
  62.         HRESULT CreateFileDescriptor(STGMEDIUM *pstm);
  63.         HRESULT CreateFileContents(STGMEDIUM *pstm, LONG lindex);
  64.         HRESULT CreatePrefDropEffect(STGMEDIUM *pstm);
  65.         HRESULT CreatePerformedDropEffect(STGMEDIUM *pstm);
  66.         HRESULT CreateLogicalPerformedDropEffect(STGMEDIUM *pstm);
  67.         HRESULT CreateHDROP(STGMEDIUM *pstm);
  68.         HRESULT CreateDataSrcClsid(STGMEDIUM *pstm);
  69.         HRESULT CreateDWORD(STGMEDIUM *pstm, DWORD dwEffect);
  70.         DWORD GetDataDWORD(FORMATETC *pfe, STGMEDIUM *pstm, DWORD *pdwOut);
  71.         //
  72.         // Prevent copy.
  73.         //
  74.         COfflineItemsData(const COfflineItemsData& rhs);
  75.         COfflineItemsData& operator = (const COfflineItemsData& rhs);
  76. };
  77. class COfflineItems : public IContextMenu, 
  78.                       public IQueryInfo
  79. {
  80.     public:
  81.         HRESULT Initialize(UINT cidl, LPCITEMIDLIST *ppidl);
  82.         //
  83.         // IUnknown Methods
  84.         //
  85.         STDMETHODIMP QueryInterface(REFIID,void **);
  86.         STDMETHODIMP_(ULONG) AddRef(void);
  87.         STDMETHODIMP_(ULONG) Release(void);
  88.     
  89.         //
  90.         // IContextMenu Methods
  91.         //
  92.         STDMETHODIMP QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
  93.         STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
  94.         STDMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uType,UINT *pwReserved, LPSTR pszName, UINT cchMax);
  95.         //
  96.         // IQueryInfo Methods
  97.         //
  98.         STDMETHODIMP GetInfoTip(DWORD dwFlags, WCHAR **ppwszTip);
  99.         STDMETHODIMP GetInfoFlags(DWORD *pdwFlags);
  100.     
  101.         static HRESULT CreateInstance(COfflineFilesFolder *pfolder, 
  102.                                       HWND hwnd, 
  103.                                       UINT cidl, 
  104.                                       LPCITEMIDLIST *ppidl, 
  105.                                       REFIID riid, 
  106.                                       void **ppv);
  107.     private:
  108.         //
  109.         // Only create through CreateInstance() static function.
  110.         //
  111.         COfflineItems(COfflineFilesFolder *pfolder, HWND hwnd);
  112.         ~COfflineItems();
  113.         LONG                 m_cRef;        // reference count
  114.         COfflineFilesFolder *m_pFolder;     // back pointer to our shell folder
  115.         UINT                 m_cItems;      // number of items we represent
  116.         LPCOLID             *m_ppolid;      // variable size array of items
  117.         HWND                 m_hwndBrowser;
  118. };
  119. #endif // _INC_CSCUI_ITEMS_H