home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / winui / shell / regview / shlfldr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-27  |  3.0 KB  |  94 lines

  1. /**************************************************************************
  2.    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3.    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4.    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5.    PARTICULAR PURPOSE.
  6.  
  7.    Copyright 1997 Microsoft Corporation.  All Rights Reserved.
  8. **************************************************************************/
  9.  
  10. /**************************************************************************
  11.  
  12.    File:          ShlFldr.h
  13.    
  14.    Description:   CShellFolder definitions.
  15.  
  16. **************************************************************************/
  17.  
  18. #ifndef SHELLFOLDER_H
  19. #define SHELLFOLDER_H
  20.  
  21. /**************************************************************************
  22.    #include statements
  23. **************************************************************************/
  24.  
  25. #include <windows.h>
  26. #include <shlobj.h>
  27.  
  28. #include "EnumIDL.h"
  29. #include "PidlMgr.h"
  30.  
  31. /**************************************************************************
  32.    global variables
  33. **************************************************************************/
  34.  
  35. extern HINSTANCE  g_hInst;
  36. extern UINT       g_DllRefCount;
  37.  
  38. /**************************************************************************
  39.  
  40.    CShellFolder class definition
  41.  
  42. **************************************************************************/
  43.  
  44. class CShellFolder : public IShellFolder, 
  45.                      public IPersistFolder
  46. {
  47. friend class CShellView;
  48.  
  49. protected:
  50.    DWORD m_ObjRefCount;
  51.  
  52. public:
  53.    CShellFolder(CShellFolder*, LPCITEMIDLIST);
  54.    ~CShellFolder();
  55.  
  56.    //IUnknown methods
  57.    STDMETHOD (QueryInterface) (REFIID riid, LPVOID * ppvObj);
  58.    STDMETHOD_ (ULONG, AddRef) (void);
  59.    STDMETHOD_ (ULONG, Release) (void);
  60.  
  61.    //IPersist methods
  62.    STDMETHODIMP GetClassID(LPCLSID);
  63.  
  64.    //IPersistFolder methods
  65.    STDMETHODIMP Initialize(LPCITEMIDLIST);
  66.  
  67.    //IShellFolder methods
  68.    STDMETHOD (ParseDisplayName) (HWND, LPBC, LPOLESTR, LPDWORD, LPITEMIDLIST*, LPDWORD);
  69.    STDMETHOD (EnumObjects) (HWND, DWORD, LPENUMIDLIST*);
  70.    STDMETHOD (BindToObject) (LPCITEMIDLIST, LPBC, REFIID, LPVOID*);
  71.    STDMETHOD (BindToStorage) (LPCITEMIDLIST, LPBC, REFIID, LPVOID*);
  72.    STDMETHOD (CompareIDs) (LPARAM, LPCITEMIDLIST, LPCITEMIDLIST);
  73.    STDMETHOD (CreateViewObject) (HWND, REFIID, LPVOID* );
  74.    STDMETHOD (GetAttributesOf) (UINT, LPCITEMIDLIST*, LPDWORD);
  75.    STDMETHOD (GetUIObjectOf) (HWND, UINT, LPCITEMIDLIST*, REFIID, LPUINT, LPVOID*);
  76.    STDMETHOD (GetDisplayNameOf) (LPCITEMIDLIST, DWORD, LPSTRRET);
  77.    STDMETHOD (SetNameOf) (HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*);
  78.  
  79. private:
  80.     LPITEMIDLIST m_pidl;
  81.     HKEY m_hKeyRoot;
  82.     LPTSTR m_lpszSubKey;
  83.     CShellFolder *m_pSFParent;
  84.     LPMALLOC m_pMalloc;
  85.    LPPIDLMGR m_pPidlMgr;
  86.  
  87.    //utility functions
  88.    BOOL GetFolderPath(LPTSTR, DWORD);
  89.    BOOL GetFolderText(LPTSTR, DWORD);
  90.     HKEY GetRootKey(void);
  91. };
  92.  
  93. #endif   //SHELLFOLDER_H
  94.