SHLFLDR.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  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.    Copyright 1997 Microsoft Corporation.  All Rights Reserved.
  7. **************************************************************************/
  8. /**************************************************************************
  9.    File:          ShlFldr.h
  10.    
  11.    Description:   CShellFolder definitions.
  12. **************************************************************************/
  13. #ifndef SHELLFOLDER_H
  14. #define SHELLFOLDER_H
  15. /**************************************************************************
  16.    #include statements
  17. **************************************************************************/
  18. #include <windows.h>
  19. #include <shlobj.h>
  20. #include "EnumIDL.h"
  21. #include "PidlMgr.h"
  22. /**************************************************************************
  23.    global variables
  24. **************************************************************************/
  25. extern HINSTANCE  g_hInst;
  26. extern UINT       g_DllRefCount;
  27. /**************************************************************************
  28.    CShellFolder class definition
  29. **************************************************************************/
  30. class CShellFolder : public IShellFolder, 
  31.                      public IPersistFolder
  32. {
  33. friend class CShellView;
  34. protected:
  35.    DWORD m_ObjRefCount;
  36. public:
  37.    CShellFolder(CShellFolder*, LPCITEMIDLIST);
  38.    ~CShellFolder();
  39.    //IUnknown methods
  40.    STDMETHOD (QueryInterface) (REFIID riid, LPVOID * ppvObj);
  41.    STDMETHOD_ (ULONG, AddRef) (void);
  42.    STDMETHOD_ (ULONG, Release) (void);
  43.    //IPersist methods
  44.    STDMETHODIMP GetClassID(LPCLSID);
  45.    //IPersistFolder methods
  46.    STDMETHODIMP Initialize(LPCITEMIDLIST);
  47.    //IShellFolder methods
  48.    STDMETHOD (ParseDisplayName) (HWND, LPBC, LPOLESTR, LPDWORD, LPITEMIDLIST*, LPDWORD);
  49.    STDMETHOD (EnumObjects) (HWND, DWORD, LPENUMIDLIST*);
  50.    STDMETHOD (BindToObject) (LPCITEMIDLIST, LPBC, REFIID, LPVOID*);
  51.    STDMETHOD (BindToStorage) (LPCITEMIDLIST, LPBC, REFIID, LPVOID*);
  52.    STDMETHOD (CompareIDs) (LPARAM, LPCITEMIDLIST, LPCITEMIDLIST);
  53.    STDMETHOD (CreateViewObject) (HWND, REFIID, LPVOID* );
  54.    STDMETHOD (GetAttributesOf) (UINT, LPCITEMIDLIST*, LPDWORD);
  55.    STDMETHOD (GetUIObjectOf) (HWND, UINT, LPCITEMIDLIST*, REFIID, LPUINT, LPVOID*);
  56.    STDMETHOD (GetDisplayNameOf) (LPCITEMIDLIST, DWORD, LPSTRRET);
  57.    STDMETHOD (SetNameOf) (HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*);
  58. private:
  59. LPITEMIDLIST m_pidl;
  60. HKEY m_hKeyRoot;
  61. LPTSTR m_lpszSubKey;
  62. CShellFolder *m_pSFParent;
  63. LPMALLOC m_pMalloc;
  64.    LPPIDLMGR m_pPidlMgr;
  65.    //utility functions
  66.    BOOL GetFolderPath(LPTSTR, DWORD);
  67.    BOOL GetFolderText(LPTSTR, DWORD);
  68. HKEY GetRootKey(void);
  69. };
  70. #endif   //SHELLFOLDER_H