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

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef __CONTROL_FOLDER__
  2. #define __CONTROL_FOLDER__
  3. #include "general.h"
  4. // forward declaration
  5. class CControlFolder;
  6. class CControlItem;
  7. HRESULT CControlFolderEnum_CreateInstance(
  8.                                       LPITEMIDLIST pidl,
  9.                                       UINT shcontf,
  10.                                       LPENUMIDLIST *ppeidl);
  11. HRESULT CControlItem_CreateInstance(
  12.                                CControlFolder *pCFolder,
  13.                                UINT cidl, 
  14.                                LPCITEMIDLIST *ppidl, 
  15.                                REFIID riid, 
  16.                                void **ppvOut);
  17. HRESULT ControlFolderView_Command(HWND hwnd, UINT uID);
  18. UINT MergeMenuHierarchy(
  19.                     HMENU hmenuDst, 
  20.                     HMENU hmenuSrc, 
  21.                     UINT idcMin, 
  22.                     UINT idcMax);
  23. ///////////////////////////////////////////////////////////////////////////////
  24. // CControlFolder declaration
  25. class CControlFolder : public IShellFolder, 
  26.                        public IPersistFolder,
  27.                        public IContextMenu
  28. {
  29.     // CControlFolder interfaces
  30.     friend CControlItem;
  31.     friend HRESULT ControlFolderView_CreateInstance(CControlFolder *pHCFolder, LPCITEMIDLIST pidl, void **ppvOut);
  32.     friend HRESULT ControlFolderView_DidDragDrop(
  33.                                             HWND hwnd, 
  34.                                             IDataObject *pdo, 
  35.                                             DWORD dwEffect);
  36.         
  37. public:
  38.     CControlFolder();
  39.     // IUnknown Methods
  40.     STDMETHODIMP QueryInterface(REFIID,void **);
  41.     STDMETHODIMP_(ULONG) AddRef(void);
  42.     STDMETHODIMP_(ULONG) Release(void);
  43.    
  44.     // IShellFolder methods
  45.     STDMETHODIMP ParseDisplayName(
  46.                              HWND hwndOwner, 
  47.                              LPBC pbcReserved,
  48.                  LPOLESTR lpszDisplayName, 
  49.                              ULONG *pchEaten,
  50.                  LPITEMIDLIST *ppidl, 
  51.                              ULONG *pdwAttributes);
  52.     STDMETHODIMP EnumObjects(
  53.                         HWND hwndOwner, 
  54.                         DWORD grfFlags,
  55.             LPENUMIDLIST *ppenumIDList);
  56.     STDMETHODIMP BindToObject(
  57.                           LPCITEMIDLIST pidl, 
  58.                           LPBC pbcReserved,
  59.               REFIID riid, 
  60.                           void **ppvOut);
  61.     STDMETHODIMP BindToStorage(
  62.                           LPCITEMIDLIST pidl, 
  63.                           LPBC pbcReserved,
  64.               REFIID riid, 
  65.                           void **ppvObj);
  66.     STDMETHODIMP CompareIDs(
  67.                         LPARAM lParam, 
  68.                         LPCITEMIDLIST pidl1, 
  69.                         LPCITEMIDLIST pidl2);
  70.     STDMETHODIMP CreateViewObject(
  71.                              HWND hwndOwner, 
  72.                              REFIID riid, 
  73.                              void **ppvOut);
  74.     STDMETHODIMP GetAttributesOf(
  75.                             UINT cidl, 
  76.                             LPCITEMIDLIST *apidl,
  77.                 ULONG *rgfInOut);
  78.     STDMETHODIMP GetUIObjectOf(
  79.                           HWND hwndOwner, 
  80.                           UINT cidl, 
  81.                           LPCITEMIDLIST *apidl,
  82.               REFIID riid, 
  83.                           UINT *prgfInOut, 
  84.                           void **ppvOut);
  85.     STDMETHODIMP GetDisplayNameOf(
  86.                           LPCITEMIDLIST pidl, 
  87.                           DWORD uFlags, 
  88.                           LPSTRRET lpName);
  89.     STDMETHODIMP SetNameOf(
  90.                       HWND hwndOwner, 
  91.                       LPCITEMIDLIST pidl,
  92.           LPCOLESTR lpszName, 
  93.                       DWORD uFlags, 
  94.                       LPITEMIDLIST *ppidlOut);
  95.     // IShellIcon Methods 
  96.     STDMETHODIMP GetIconOf(LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex);
  97.     // IPersist Methods 
  98.     STDMETHODIMP GetClassID(LPCLSID lpClassID);
  99.     // IPersistFolder Methods
  100.     STDMETHODIMP Initialize(LPCITEMIDLIST pidl);
  101.     // IContextMenu Methods -- This handles the background context menus
  102.     STDMETHODIMP QueryContextMenu(
  103.                               HMENU hmenu, 
  104.                               UINT indexMenu, 
  105.                               UINT idCmdFirst,
  106.                               UINT idCmdLast, 
  107.                               UINT uFlags);
  108.     STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
  109.     STDMETHODIMP GetCommandString(
  110.                               UINT_PTR idCmd, 
  111.                               UINT uType,
  112.                               UINT *pwReserved,
  113.                               LPTSTR pszName, 
  114.                               UINT cchMax);
  115. protected:
  116.     ~CControlFolder();
  117.     UINT            m_cRef;
  118.     LPITEMIDLIST    m_pidl;
  119.     LPMALLOC        m_pMalloc;
  120. };
  121. #endif