mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.4 KiB
160 lines
4.4 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1995
|
|
//
|
|
// File: ofsfldr.h
|
|
//
|
|
// Contents: Interface declaration for the COFSFolder class
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 6-26-95 Davepl Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef _OFSFLDR_H
|
|
#define _OFSFLDR_H
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: COFSFolder
|
|
//
|
|
// Purpose: Subsumes the functionality of FSFolder and adds new
|
|
// OFS-specific stuff
|
|
//
|
|
// History: 6-26-95 Davepl Created
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class COFSFolder : public IShellFolder, public IShellIcon, public IPersistFolder
|
|
{
|
|
public:
|
|
|
|
UINT m_cRef;
|
|
CIDList * m_pidl; // Absolute IDList
|
|
|
|
int m_cHiddenFiles;
|
|
DWORD m_dwSize;
|
|
|
|
UINT m_wSpecialFID; // CSIDL_PROGRAMS if applicable
|
|
|
|
BOOL m_fIsDSFolder : 1; // This is a DS Folder
|
|
BOOL m_fCachedCLSID : 1; // clsidView is already cached
|
|
BOOL m_fHasCLSID : 1; // clsidView has a valid CLSID
|
|
CLSID m_clsidView; // CLSID for View object
|
|
|
|
//
|
|
// Constructor/Destructor
|
|
//
|
|
|
|
COFSFolder();
|
|
~COFSFolder();
|
|
|
|
//
|
|
// Initialization
|
|
//
|
|
|
|
HRESULT InitializeFromIDList(const CIDList * pidl,
|
|
REFIID riid,
|
|
LPVOID * ppvOut);
|
|
|
|
//
|
|
// IUnknown members
|
|
//
|
|
|
|
STDMETHOD(QueryInterface)(REFIID,
|
|
LPVOID*);
|
|
STDMETHOD_(ULONG,AddRef)();
|
|
STDMETHOD_(ULONG,Release)();
|
|
|
|
//
|
|
// IShellFolder methods
|
|
//
|
|
|
|
STDMETHOD(ParseDisplayName)(HWND hwnd,
|
|
LPBC pbcReserved,
|
|
LPOLESTR lpszDisplayName,
|
|
ULONG * pchEaten,
|
|
LPITEMIDLIST * ppidl,
|
|
ULONG *pdwAttributes);
|
|
|
|
STDMETHOD(EnumObjects)(HWND hwnd,
|
|
DWORD grfFlags,
|
|
LPENUMIDLIST * ppenumIDList);
|
|
|
|
STDMETHOD(BindToObject)(LPCITEMIDLIST pidl,
|
|
LPBC pbcReserved,
|
|
REFIID riid,
|
|
LPVOID * ppvOut);
|
|
|
|
STDMETHOD(BindToStorage)(LPCITEMIDLIST pidl,
|
|
LPBC pbcReserved,
|
|
REFIID riid,
|
|
LPVOID * ppvObj);
|
|
|
|
STDMETHOD(CompareIDs)(LPARAM lParam,
|
|
LPCITEMIDLIST pidl1,
|
|
LPCITEMIDLIST pidl2);
|
|
|
|
STDMETHOD(CreateViewObject)(HWND hwnd,
|
|
REFIID riid,
|
|
LPVOID * ppvOut);
|
|
|
|
STDMETHOD(GetAttributesOf)(UINT cidl,
|
|
LPCITEMIDLIST * apidl,
|
|
ULONG * rgfInOut);
|
|
|
|
STDMETHOD(GetUIObjectOf)(HWND hwnd,
|
|
UINT cidl,
|
|
LPCITEMIDLIST * apidl,
|
|
REFIID riid,
|
|
UINT * prgfInOut,
|
|
LPVOID * ppvOut);
|
|
|
|
STDMETHOD(GetDisplayNameOf)(LPCITEMIDLIST pidl,
|
|
DWORD uFlags,
|
|
LPSTRRET lpName);
|
|
|
|
STDMETHOD(SetNameOf)(HWND hwnd,
|
|
LPCITEMIDLIST pidl,
|
|
LPCOLESTR lpszName,
|
|
DWORD uFlags,
|
|
LPITEMIDLIST * ppidlOut);
|
|
|
|
//
|
|
// IPersist methods
|
|
//
|
|
|
|
STDMETHOD(GetClassID)(LPCLSID lpClassID);
|
|
|
|
//
|
|
// IPersistFolder methods
|
|
//
|
|
|
|
STDMETHOD(Initialize)(LPCITEMIDLIST pidl);
|
|
|
|
//
|
|
// IShellIcon methods
|
|
//
|
|
|
|
STDMETHOD(GetIconOf)(LPCITEMIDLIST pidl,
|
|
UINT flags,
|
|
LPINT lpIconIndex);
|
|
|
|
private:
|
|
//
|
|
// Custom Methods
|
|
//
|
|
|
|
HRESULT SynchronousQuery(TCHAR* szScope,
|
|
DWORD grfFlags,
|
|
CEnumOLEDB* pEnumOLEDB);
|
|
|
|
BOOL IsDSFolder(LPCITEMIDLIST pidl);
|
|
};
|
|
typedef COFSFolder *LPOFSFOLDER;
|
|
|
|
#endif // _OFSFLDR_H
|