Windows NT 4.0 source code leak
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

//+---------------------------------------------------------------------------
//
// 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;
};