/**************************************************************\ FILE: addrlist.h DESCRIPTION: This is a class that all Address Lists can inherite from. This will give them the IAddressList interface so they can work in the AddressBand/Bar. \**************************************************************/ #ifndef _ADDRLIST_H #define _ADDRLIST_H #include "shellurl.h" #define ACP_LIST_MAX_CONST 25 /**************************************************************\ CLASS: CAddressList DESCRIPTION: This is a class that all Address Lists can inherite from. This will give them the IAddressList interface so they can work in the AddressBand/Bar. NOTE: This is a virtual class! \**************************************************************/ class CAddressList : public IAddressList // (Includes IWinEventHandler) { public: ////////////////////////////////////////////////////// // Public Interfaces ////////////////////////////////////////////////////// // *** IUnknown *** virtual STDMETHODIMP_(ULONG) AddRef(void); virtual STDMETHODIMP_(ULONG) Release(void); virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj); // *** IWinEventHandler methods *** virtual STDMETHODIMP OnWinEvent(HWND hwnd, UINT dwMsg, WPARAM wParam, LPARAM lParam, LRESULT* plre); virtual STDMETHODIMP IsWindowOwner(HWND hwnd) { return E_NOTIMPL; } // *** IAddressList methods *** virtual STDMETHODIMP Connect(BOOL fConnect, HWND hwnd, IBrowserService * pbs, IBandProxy * pbp, IAutoComplete * pac); virtual STDMETHODIMP NavigationComplete(LPVOID pvCShellUrl); virtual STDMETHODIMP Refresh(DWORD dwType) { return S_OK; } // Force subclasses to handle. virtual STDMETHODIMP Load(void) {return E_NOTIMPL;} virtual STDMETHODIMP Save(void) {return E_NOTIMPL;} virtual STDMETHODIMP SetToListIndex(int nIndex, LPVOID pvShelLUrl); virtual STDMETHODIMP FileSysChangeAL(DWORD dw, LPCITEMIDLIST* ppidl); protected: ////////////////////////////////////////////////////// // Private Member Functions ////////////////////////////////////////////////////// // Constructor / Destructor CAddressList(); virtual ~CAddressList(void); // This is now an OLE Object and cannot be used as a normal Class. // Address Band Specific Functions virtual LRESULT _OnNotify(LPNMHDR pnm); virtual LRESULT _OnCommand(WPARAM wParam, LPARAM lParam); virtual void _InitCombobox(void); virtual HRESULT _Populate(void) = 0; // This is a PURE function. virtual void _PurgeComboBox(); // Helper Functions void _ComboBoxInsertURL(LPCTSTR pszURL, int cchStrSize, int nMaxComboBoxSize); BOOL _MoveAddressToTopOfList(int iSel); HRESULT _GetUrlUI(CShellUrl * psu, LPCTSTR szUrl, int *piImage, int *piImageSelected); HRESULT _GetFastPathIcons(LPCTSTR pszPath, int *piImage, int *piSelectedImage); HRESULT _GetPidlIcon(LPCITEMIDLIST pidl, int *piImage, int *piSelectedImage); virtual LPITEMIDLIST _GetDragDropPidl(LPNMCBEDRAGBEGINW pnmcbe); LRESULT _OnDragBeginW(LPNMCBEDRAGBEGINW pnmcbe); LRESULT _OnDragBeginA(LPNMCBEDRAGBEGINA pnmcbe) ; HRESULT _SetPreferedDropEffect(IDataObject *pdtobj, DWORD dwEffect); ////////////////////////////////////////////////////// // Private Member Variables ////////////////////////////////////////////////////// int _cRef; BOOL _fVisible:1; // TRUE when the toolbar is visible. HWND _hwnd; // The window IBrowserService * _pbs; IBandProxy * _pbp; CShellUrl * _pshuUrl; }; HRESULT GetCBListIndex(HWND hwnd, int iItem, LPTSTR szAddress, int cchAddressSize); IAddressList * CSNSList_Create(void); IAddressList * CMRUList_Create(void); IAddressList * CACPList_Create(void); //=========================================================================== // IMRU: Interface to CMRUList. Note that this interface never leaves browseui #undef INTERFACE #define INTERFACE IMRU DECLARE_INTERFACE_(IMRU, IUnknown) { // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** IMRU Methods *** STDMETHOD(AddEntry) (THIS_ LPCWSTR pszEntry) PURE; }; #endif // _ADDRLIST_H