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.
262 lines
8.4 KiB
262 lines
8.4 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1995
|
|
//
|
|
// File: find.h
|
|
//
|
|
// Contents: Declarations for the OLE-DB find extension
|
|
//
|
|
// History: 31-Aug-95 JonBe Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class COLEDBFindExt: public IShellExtInit,
|
|
public IContextMenu
|
|
{
|
|
public:
|
|
|
|
// COLEDBFindExt
|
|
COLEDBFindExt();
|
|
|
|
// IUnknown methods
|
|
STDMETHOD(QueryInterface)(REFIID riid, LPVOID * ppvObj);
|
|
STDMETHOD_(ULONG,AddRef)();
|
|
STDMETHOD_(ULONG,Release)();
|
|
|
|
// IShellExtInit methods
|
|
STDMETHOD(Initialize)(LPCITEMIDLIST pidlFolder,
|
|
LPDATAOBJECT lpdobj,
|
|
HKEY hkeyProgID);
|
|
|
|
// IContextMenu methods
|
|
STDMETHOD(QueryContextMenu)(HMENU hmenu,
|
|
UINT indexMenu,
|
|
UINT idCmdFirst,
|
|
UINT idCmdLast,
|
|
UINT uFlags);
|
|
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO lpici);
|
|
STDMETHOD(GetCommandString)(UINT idCmd,
|
|
UINT uType,
|
|
UINT* pwReserved,
|
|
LPSTR pszName,
|
|
UINT cchMax);
|
|
|
|
private:
|
|
|
|
void DoFindFiles();
|
|
void DoCatalogViewer();
|
|
|
|
ULONG m_cRefs;
|
|
|
|
};
|
|
|
|
// Private APIs. Make private methods?
|
|
|
|
DWORD CALLBACK OLEDBFind_MainThreadProc(LPVOID lpThreadParameters);
|
|
BOOL CALLBACK OLEDBFind_DlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
DWORD CALLBACK Catalog_MainThreadProc(LPVOID lpThreadParameters);
|
|
BOOL CALLBACK Catalog_DlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
BOOL _CatalogBrowse_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
|
|
void _CatalogBrowse_OnDestroy(HWND hwndDlg);
|
|
void _CatalogBrowse_OnSize(HWND hwndDlg, UINT state, int cx, int cy);
|
|
void _CatalogBrowse_OnInitMenuPopup(HWND hwndDlg, HMENU hmInit, int nIndex, BOOL fSystemMenu);
|
|
LRESULT _CatalogBrowse_OnCommand(HWND hwnd, UINT id, HWND hwndCtl, UINT codeNotify);
|
|
LRESULT _CatalogBrowse_ForwardMsgToView(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
HRESULT CALLBACK Catalog_DFMCallBack(LPSHELLFOLDER psf, HWND hwndOwner,
|
|
LPDATAOBJECT pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
HRESULT CALLBACK Catalog_FNVCallBack(LPSHELLVIEW psvOuter, LPSHELLFOLDER psf,
|
|
HWND hwndOwner, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
HRESULT Catalog_GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, LPSHELLDETAILS lpDetails);
|
|
LPITEMIDLIST _GetParentsPIDL(LPCITEMIDLIST pidl);
|
|
int CALLBACK Catalog_SortForFileOp(LPVOID lp1, LPVOID lp2, LPARAM lparam);
|
|
|
|
class CCatalogBrowser: public IShellBrowser
|
|
{
|
|
public:
|
|
|
|
// CCatalogBrowser
|
|
CCatalogBrowser(HWND hwnd);
|
|
~CCatalogBrowser();
|
|
|
|
// IUnknown methods
|
|
STDMETHOD(QueryInterface)(REFIID riid, LPVOID * ppvObj);
|
|
STDMETHOD_(ULONG,AddRef)();
|
|
STDMETHOD_(ULONG,Release)();
|
|
|
|
// IShellBrowser
|
|
|
|
STDMETHOD(GetWindow)(HWND * lphwnd);
|
|
STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode);
|
|
STDMETHOD(InsertMenusSB)(HMENU hmenuShared,
|
|
LPOLEMENUGROUPWIDTHS lpMenuWidths);
|
|
STDMETHOD(SetMenuSB)(HMENU hmenuShared,
|
|
HOLEMENU holemenuReserved,
|
|
HWND hwndActiveObject);
|
|
STDMETHOD(RemoveMenusSB)(HMENU hmenuShared);
|
|
STDMETHOD(SetStatusTextSB)(LPCOLESTR lpszStatusText);
|
|
STDMETHOD(EnableModelessSB)(BOOL fEnable);
|
|
STDMETHOD(TranslateAcceleratorSB)(LPMSG lpmsg, WORD wID);
|
|
STDMETHOD(BrowseObject)(LPCITEMIDLIST pidl, UINT wFlags);
|
|
STDMETHOD(GetViewStateStream)(DWORD grfMode, LPSTREAM *ppStrm);
|
|
STDMETHOD(GetControlWindow)(UINT id, HWND * lphwnd);
|
|
STDMETHOD(SendControlMsg)(UINT id,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam,
|
|
LRESULT * pret);
|
|
STDMETHOD(QueryActiveShellView)(IShellView ** ppshv);
|
|
STDMETHOD(OnViewWindowActive)(IShellView * ppshv);
|
|
STDMETHOD(SetToolbarItems)(LPTBBUTTON lpButtons,
|
|
UINT nButtons,
|
|
UINT uFlags);
|
|
|
|
IShellFolder* m_pFolder;
|
|
IShellView* m_pView;
|
|
HWND m_hwndView;
|
|
FOLDERSETTINGS m_fs;
|
|
HMENU m_hmenuTemplate;
|
|
HMENU m_hmenuCurrent;
|
|
|
|
private:
|
|
|
|
ULONG m_cRefs;
|
|
HWND m_hwndDlg;
|
|
};
|
|
|
|
|
|
class CCatalogFolder: public IShellFolder
|
|
{
|
|
public:
|
|
|
|
//
|
|
// Constructor/Destructor
|
|
//
|
|
CCatalogFolder();
|
|
~CCatalogFolder();
|
|
|
|
//
|
|
// IUnknown members
|
|
//
|
|
STDMETHOD(QueryInterface)(REFIID riid,
|
|
LPVOID* ppvObj);
|
|
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);
|
|
|
|
private:
|
|
|
|
HRESULT _GetObjectsShellFolder(LPCITEMIDLIST pidl, LPSHELLFOLDER* ppsf);
|
|
|
|
HRESULT _InstantiateIQuery(LPCWSTR pszFolder, LPVOID* ppQueryOut);
|
|
|
|
HRESULT _SynchronousQuery(LPCWSTR pszFolder,
|
|
DWORD grfFlags,
|
|
CEnumOLEDB* pEnumOLEDB);
|
|
HRESULT _WrapIContextMenu(HWND hwndOwner, LPSHELLFOLDER psfItem,
|
|
LPCITEMIDLIST pidl, LPVOID *ppvOut);
|
|
|
|
|
|
ULONG m_cRefs;
|
|
};
|
|
|
|
class CCatalogMenuWrap: public IContextMenu2
|
|
{
|
|
public:
|
|
|
|
//
|
|
// Constructor / Destructor
|
|
//
|
|
CCatalogMenuWrap();
|
|
~CCatalogMenuWrap();
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
STDMETHOD(QueryInterface) (REFIID riid, LPVOID * ppvObj);
|
|
STDMETHOD_(ULONG,AddRef) ();
|
|
STDMETHOD_(ULONG,Release) ();
|
|
|
|
//
|
|
// IContextMenu2 methods
|
|
//
|
|
STDMETHOD(QueryContextMenu)(HMENU hmenu,
|
|
UINT indexMenu,
|
|
UINT idCmdFirst,
|
|
UINT idCmdLast,
|
|
UINT uFlags);
|
|
|
|
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO lpici);
|
|
|
|
STDMETHOD(GetCommandString)(UINT idCmd,
|
|
UINT uType,
|
|
UINT* pwReserved,
|
|
LPSTR pszName,
|
|
UINT cchMax);
|
|
|
|
STDMETHOD(HandleMenuMsg)(UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
HWND m_hwndOwner;
|
|
IDataObject* m_pdtobj;
|
|
IContextMenu* m_pcmItem;
|
|
|
|
private:
|
|
|
|
ULONG m_cRefs;
|
|
IContextMenu2* m_pcm2Item;
|
|
};
|