138 lines
5.6 KiB
C++
138 lines
5.6 KiB
C++
/**************************************************************\
|
|
FILE: address.h
|
|
|
|
DESCRIPTION:
|
|
The Class CAddressBand exists to support a "Address" Band
|
|
ToolBar. This will be used in the Browser's toolbar or can
|
|
be used in the Start Menu.
|
|
\**************************************************************/
|
|
|
|
#ifndef _ADDRESS_H
|
|
#define _ADDRESS_H
|
|
|
|
#include "bands.h"
|
|
#include "bandprxy.h"
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
// #DEFINEs
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
// Data Structures
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
// Prototypes
|
|
|
|
/**************************************************************\
|
|
CLASS: CAddressBand
|
|
|
|
DESCRIPTION:
|
|
This Class CAddressBand exists to support a "Address" Band
|
|
ToolBar. This will be used in the Browser's toolbar or can
|
|
be used in the Start Menu/Taskbar. If the Band is part of
|
|
a Browser toolbar, any modifications made to the AddressBar
|
|
will go the the browser window.
|
|
|
|
By default, the this AddressBand will not point to a
|
|
browser window when it is on the Taskbar or Start Menu.
|
|
Anything "executed" in the AddressBar will create a new
|
|
browser window. Future support may allow for the AddressBand
|
|
in the taskbar/start menu to reference a currently existing
|
|
browser window.
|
|
\**************************************************************/
|
|
class CAddressBand
|
|
: public CToolBand
|
|
, public IWinEventHandler
|
|
, public IAddressBand
|
|
, public IInputObjectSite
|
|
{
|
|
public:
|
|
//////////////////////////////////////////////////////
|
|
// Public Interfaces
|
|
//////////////////////////////////////////////////////
|
|
|
|
// *** IUnknown ***
|
|
virtual STDMETHODIMP_(ULONG) AddRef(void) { return CToolBand::AddRef(); };
|
|
virtual STDMETHODIMP_(ULONG) Release(void){ return CToolBand::Release(); };
|
|
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
|
|
|
|
// *** IOleCommandTarget methods ***
|
|
virtual STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
|
|
OLECMD rgCmds[], OLECMDTEXT *pcmdtext); // Interface forwarding
|
|
virtual STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt,
|
|
VARIANTARG *pvarargIn, VARIANTARG *pvarargOut); // Interface forwarding
|
|
|
|
// *** IDockingWindow methods ***
|
|
virtual STDMETHODIMP ShowDW(BOOL fShow);
|
|
virtual STDMETHODIMP CloseDW(DWORD dw);
|
|
|
|
// *** IObjectWithSite methods ***
|
|
virtual STDMETHODIMP SetSite(IUnknown* punkSite);
|
|
|
|
// *** IInputObject methods ***
|
|
virtual STDMETHODIMP TranslateAcceleratorIO(LPMSG lpMsg);
|
|
virtual STDMETHODIMP HasFocusIO(void);
|
|
|
|
// *** IInputObjectSite methods ***
|
|
virtual STDMETHODIMP OnFocusChangeIS(IUnknown *punk, BOOL fSetFocus);
|
|
|
|
// *** IShellToolband methods ***
|
|
STDMETHOD(GetBandInfo) (THIS_ DWORD dwBandID, DWORD fViewMode,
|
|
DESKBANDINFO* pdbi) ;
|
|
|
|
// *** IWinEventHandler methods ***
|
|
virtual STDMETHODIMP OnWinEvent(HWND hwnd, UINT dwMsg, WPARAM wParam, LPARAM lParam, LRESULT* plre);
|
|
virtual STDMETHODIMP IsWindowOwner(HWND hwnd);
|
|
|
|
// *** IAddressBand methods ***
|
|
virtual STDMETHODIMP FileSysChange(DWORD dwEvent, LPCITEMIDLIST * ppidl);
|
|
virtual STDMETHODIMP Refresh(VARIANT * pvarType);
|
|
|
|
// *** IPersistStream methods ***
|
|
virtual STDMETHODIMP GetClassID(CLSID *pClassID){ *pClassID = CLSID_AddressBand; return S_OK; }
|
|
virtual STDMETHODIMP Load(IStream *pStm);
|
|
virtual STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
|
|
virtual STDMETHODIMP IsDirty(void) {return S_OK;} // Indicate that we are dirty and ::Save() needs to be called.
|
|
|
|
protected:
|
|
//////////////////////////////////////////////////////
|
|
// Private Member Functions
|
|
//////////////////////////////////////////////////////
|
|
|
|
// Constructor / Destructor
|
|
CAddressBand();
|
|
virtual ~CAddressBand();
|
|
|
|
HRESULT _CreateAddressBand(IUnknown * punkSite);
|
|
static LRESULT CALLBACK _ComboExWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
static LRESULT CALLBACK _ComboExEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
BOOL _CreateGoButton();
|
|
void _InitGoButton();
|
|
void _OnGetInfoTip(LPNMTBGETINFOTIP pnmTT);
|
|
|
|
|
|
// Friend Functions
|
|
friend HRESULT CAddressBand_CreateInstance(IUnknown *punkOuter, IUnknown **ppunk, LPCOBJECTINFO poi);
|
|
|
|
//////////////////////////////////////////////////////
|
|
// Private Member Variables
|
|
//////////////////////////////////////////////////////
|
|
BOOL _fVertical :1;
|
|
|
|
// Only valid if _fInited == TRUE
|
|
HWND _hwndEdit; // Address edit control child Window
|
|
HWND _hwndCombo; // Address combo control child Window
|
|
BOOL _fVisible:1; // TRUE when the toolbar is visible.
|
|
BOOL _fGoButton:1; // TRUE if go button is visible
|
|
IAddressEditBox* _paeb; // IAddressEditBox that controls
|
|
IWinEventHandler* _pweh; // IWinEventHandler interface for the AddressEditBox object. (Cached for Perf)
|
|
HIMAGELIST _himlDefault; // default gray-scale go button
|
|
HIMAGELIST _himlHot; // color go button
|
|
HWND _hwndTools; // toolbar containing go button
|
|
WNDPROC _pfnOldWndProc; // Former WndProc of ComboBoxEx
|
|
WNDPROC _pfnOldEditProc;// Former WndProc of Edit control in ComboBoxEx
|
|
};
|
|
|
|
|
|
#endif /* _ADDRESS_H */
|