[BROWSEUI:FORMATTING]

- Use spaces instead of tabs

svn path=/trunk/; revision=58878
This commit is contained in:
Thomas Faber 2013-04-28 08:42:22 +00:00
parent d0ad4929d7
commit f2139d0242
32 changed files with 6133 additions and 6133 deletions

View file

@ -1,8 +1,8 @@
/*
* Multisource AutoComplete list
* Multisource AutoComplete list
*
* Copyright 2007 Mikolaj Zalewski
* Copyright 2009 Andrew Hill
* Copyright 2007 Mikolaj Zalewski
* Copyright 2009 Andrew Hill
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -41,7 +41,7 @@ CACLMulti::CACLMulti()
CACLMulti::~CACLMulti()
{
int i;
int i;
TRACE("destroying %p\n", this);
for (i = 0; i < fObjectCount; i++)
@ -69,7 +69,7 @@ HRESULT STDMETHODCALLTYPE CACLMulti::Append(IUnknown *punk)
HRESULT STDMETHODCALLTYPE CACLMulti::Remove(IUnknown *punk)
{
int i;
int i;
TRACE("(%p, %p)\n", this, punk);
for (i = 0; i < fObjectCount; i++)
@ -109,7 +109,7 @@ HRESULT STDMETHODCALLTYPE CACLMulti::Next(ULONG celt, LPOLESTR *rgelt, ULONG *pc
HRESULT STDMETHODCALLTYPE CACLMulti::Reset()
{
int i;
int i;
fCurrentObject = 0;
for (i = 0; i < fObjectCount; i++)
@ -135,8 +135,8 @@ HRESULT STDMETHODCALLTYPE CACLMulti::Clone(IEnumString **ppOut)
HRESULT STDMETHODCALLTYPE CACLMulti::Expand(LPCWSTR wstr)
{
HRESULT res = S_OK;
int i;
HRESULT res = S_OK;
int i;
for (i = 0; i < fObjectCount; i++)
{

View file

@ -1,8 +1,8 @@
/*
* Multisource AutoComplete list
* Multisource AutoComplete list
*
* Copyright 2007 Mikolaj Zalewski
* Copyright 2009 Andrew Hill
* Copyright 2007 Mikolaj Zalewski
* Copyright 2009 Andrew Hill
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -22,53 +22,53 @@
#pragma once
class CACLMulti :
public CComCoClass<CACLMulti, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IEnumString,
public IACList,
public IObjMgr
public CComCoClass<CACLMulti, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IEnumString,
public IACList,
public IObjMgr
{
private:
struct ACLMultiSublist
{
IUnknown *punk;
IEnumString *pEnum;
IACList *pACL;
};
struct ACLMultiSublist
{
IUnknown *punk;
IEnumString *pEnum;
IACList *pACL;
};
INT fObjectCount;
INT fCurrentObject;
struct ACLMultiSublist *fObjects;
INT fObjectCount;
INT fCurrentObject;
struct ACLMultiSublist *fObjects;
public:
CACLMulti();
~CACLMulti();
CACLMulti();
~CACLMulti();
// *** IEnumString methods ***
virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched);
virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
virtual HRESULT STDMETHODCALLTYPE Reset();
virtual HRESULT STDMETHODCALLTYPE Clone(IEnumString **ppenum);
// *** IEnumString methods ***
virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched);
virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
virtual HRESULT STDMETHODCALLTYPE Reset();
virtual HRESULT STDMETHODCALLTYPE Clone(IEnumString **ppenum);
// *** IACList methods ***
virtual HRESULT STDMETHODCALLTYPE Expand(LPCOLESTR pszExpand);
// *** IACList methods ***
virtual HRESULT STDMETHODCALLTYPE Expand(LPCOLESTR pszExpand);
// *** IObjMgr methods ***
virtual HRESULT STDMETHODCALLTYPE Append(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE Remove(IUnknown *punk);
// *** IObjMgr methods ***
virtual HRESULT STDMETHODCALLTYPE Append(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE Remove(IUnknown *punk);
private:
void release_obj(struct ACLMultiSublist *obj);
void release_obj(struct ACLMultiSublist *obj);
public:
DECLARE_REGISTRY_RESOURCEID(IDR_ACLMULTI)
DECLARE_NOT_AGGREGATABLE(CACLMulti)
DECLARE_REGISTRY_RESOURCEID(IDR_ACLMULTI)
DECLARE_NOT_AGGREGATABLE(CACLMulti)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CACLMulti)
COM_INTERFACE_ENTRY_IID(IID_IEnumString, IEnumString)
COM_INTERFACE_ENTRY_IID(IID_IACList, IACList)
COM_INTERFACE_ENTRY_IID(IID_IObjMgr, IObjMgr)
END_COM_MAP()
BEGIN_COM_MAP(CACLMulti)
COM_INTERFACE_ENTRY_IID(IID_IEnumString, IEnumString)
COM_INTERFACE_ENTRY_IID(IID_IACList, IACList)
COM_INTERFACE_ENTRY_IID(IID_IObjMgr, IObjMgr)
END_COM_MAP()
};

View file

@ -40,10 +40,10 @@ TODO:
CAddressBand::CAddressBand()
{
fEditControl = NULL;
fGoButton = NULL;
fComboBox = NULL;
fGoButtonShown = false;
fEditControl = NULL;
fGoButton = NULL;
fComboBox = NULL;
fGoButtonShown = false;
}
CAddressBand::~CAddressBand()
@ -52,154 +52,154 @@ CAddressBand::~CAddressBand()
void CAddressBand::FocusChange(BOOL bFocus)
{
// m_bFocus = bFocus;
// m_bFocus = bFocus;
//Inform the input object site that the focus has changed.
if (fSite)
{
//Inform the input object site that the focus has changed.
if (fSite)
{
#if 0
fSite->OnFocusChangeIS((IDockingWindow *)this, bFocus);
fSite->OnFocusChangeIS((IDockingWindow *)this, bFocus);
#endif
}
}
}
HRESULT STDMETHODCALLTYPE CAddressBand::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi)
{
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 400;
pdbi->ptMinSize.y = 22;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = 0;
pdbi->ptMaxSize.y = 0;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 0;
pdbi->ptIntegral.y = 0;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 400;
pdbi->ptActual.y = 22;
}
if (pdbi->dwMask & DBIM_TITLE)
wcscpy(pdbi->wszTitle, L"Address");
if (pdbi->dwMask & DBIM_MODEFLAGS)
pdbi->dwModeFlags = DBIMF_UNDELETEABLE;
if (pdbi->dwMask & DBIM_BKCOLOR)
pdbi->crBkgnd = 0;
return S_OK;
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 400;
pdbi->ptMinSize.y = 22;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = 0;
pdbi->ptMaxSize.y = 0;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 0;
pdbi->ptIntegral.y = 0;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 400;
pdbi->ptActual.y = 22;
}
if (pdbi->dwMask & DBIM_TITLE)
wcscpy(pdbi->wszTitle, L"Address");
if (pdbi->dwMask & DBIM_MODEFLAGS)
pdbi->dwModeFlags = DBIMF_UNDELETEABLE;
if (pdbi->dwMask & DBIM_BKCOLOR)
pdbi->crBkgnd = 0;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CAddressBand::SetSite(IUnknown *pUnkSite)
{
CComPtr<IShellService> shellService;
CComPtr<IUnknown> offset34;
HWND parentWindow;
IOleWindow *oleWindow;
HWND toolbar;
static const TBBUTTON buttonInfo[] = { {0, 1, TBSTATE_ENABLED, 0} };
HIMAGELIST normalImagelist;
HIMAGELIST hotImageList;
HINSTANCE shellInstance;
HRESULT hResult;
CComPtr<IShellService> shellService;
CComPtr<IUnknown> offset34;
HWND parentWindow;
IOleWindow *oleWindow;
HWND toolbar;
static const TBBUTTON buttonInfo[] = { {0, 1, TBSTATE_ENABLED, 0} };
HIMAGELIST normalImagelist;
HIMAGELIST hotImageList;
HINSTANCE shellInstance;
HRESULT hResult;
fSite.Release();
if (pUnkSite == NULL)
return S_OK;
fSite.Release();
if (pUnkSite == NULL)
return S_OK;
hResult = pUnkSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&fSite));
if (FAILED(hResult))
return hResult;
hResult = pUnkSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&fSite));
if (FAILED(hResult))
return hResult;
// get window handle of parent
parentWindow = NULL;
hResult = pUnkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
{
oleWindow->GetWindow(&parentWindow);
oleWindow->Release();
}
if (!::IsWindow(parentWindow))
return E_FAIL;
// get window handle of parent
parentWindow = NULL;
hResult = pUnkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
{
oleWindow->GetWindow(&parentWindow);
oleWindow->Release();
}
if (!::IsWindow(parentWindow))
return E_FAIL;
// create combo box ex
toolbar = CreateWindowEx(WS_EX_TOOLWINDOW, WC_COMBOBOXEXW, NULL, WS_CHILD | WS_VISIBLE |
WS_CLIPCHILDREN | WS_TABSTOP | CCS_NODIVIDER | CCS_NOMOVEY,
0, 0, 500, 250, parentWindow, (HMENU)0xa205, _AtlBaseModule.GetModuleInstance(), 0);
if (toolbar == NULL)
return E_FAIL;
SubclassWindow(toolbar);
// create combo box ex
toolbar = CreateWindowEx(WS_EX_TOOLWINDOW, WC_COMBOBOXEXW, NULL, WS_CHILD | WS_VISIBLE |
WS_CLIPCHILDREN | WS_TABSTOP | CCS_NODIVIDER | CCS_NOMOVEY,
0, 0, 500, 250, parentWindow, (HMENU)0xa205, _AtlBaseModule.GetModuleInstance(), 0);
if (toolbar == NULL)
return E_FAIL;
SubclassWindow(toolbar);
SendMessage(CBEM_SETEXTENDEDSTYLE,
CBES_EX_CASESENSITIVE | CBES_EX_NOSIZELIMIT, CBES_EX_CASESENSITIVE | CBES_EX_NOSIZELIMIT);
SendMessage(CBEM_SETEXTENDEDSTYLE,
CBES_EX_CASESENSITIVE | CBES_EX_NOSIZELIMIT, CBES_EX_CASESENSITIVE | CBES_EX_NOSIZELIMIT);
fEditControl = reinterpret_cast<HWND>(SendMessage(CBEM_GETEDITCONTROL, 0, 0));
fComboBox = reinterpret_cast<HWND>(SendMessage(CBEM_GETCOMBOCONTROL, 0, 0));
fEditControl = reinterpret_cast<HWND>(SendMessage(CBEM_GETEDITCONTROL, 0, 0));
fComboBox = reinterpret_cast<HWND>(SendMessage(CBEM_GETCOMBOCONTROL, 0, 0));
#if 1
hResult = CoCreateInstance(CLSID_AddressEditBox, NULL, CLSCTX_INPROC_SERVER,
IID_IAddressEditBox, reinterpret_cast<void **>(&fAddressEditBox));
if (FAILED(hResult))
return hResult;
hResult = CoCreateInstance(CLSID_AddressEditBox, NULL, CLSCTX_INPROC_SERVER,
IID_IAddressEditBox, reinterpret_cast<void **>(&fAddressEditBox));
if (FAILED(hResult))
return hResult;
#else
// instantiate new version
// instantiate new version
#endif
hResult = fAddressEditBox->QueryInterface(IID_IShellService, reinterpret_cast<void **>(&shellService));
if (FAILED(hResult))
return hResult;
hResult = fAddressEditBox->Init(toolbar, fEditControl, 8, pUnkSite /*(IAddressBand *)this*/ );
if (FAILED(hResult))
return hResult;
hResult = shellService->SetOwner(pUnkSite);
if (FAILED(hResult))
return hResult;
hResult = fAddressEditBox->QueryInterface(IID_IShellService, reinterpret_cast<void **>(&shellService));
if (FAILED(hResult))
return hResult;
hResult = fAddressEditBox->Init(toolbar, fEditControl, 8, pUnkSite /*(IAddressBand *)this*/ );
if (FAILED(hResult))
return hResult;
hResult = shellService->SetOwner(pUnkSite);
if (FAILED(hResult))
return hResult;
// TODO: properly initialize this from registry
fGoButtonShown = true;
// TODO: properly initialize this from registry
fGoButtonShown = true;
shellInstance = GetModuleHandle(_T("shell32.dll"));
normalImagelist = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_NORMAL),
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
hotImageList = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_HOT),
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
shellInstance = GetModuleHandle(_T("shell32.dll"));
normalImagelist = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_NORMAL),
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
hotImageList = ImageList_LoadImageW(shellInstance, MAKEINTRESOURCE(IDB_GOBUTTON_HOT),
20, 0, RGB(255, 0, 255), IMAGE_BITMAP, LR_CREATEDIBSECTION);
fGoButton = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAMEW, 0, WS_CHILD | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | TBSTYLE_LIST | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | CCS_NODIVIDER |
CCS_NOPARENTALIGN | CCS_NORESIZE,
0, 0, 0, 0, m_hWnd, NULL, _AtlBaseModule.GetModuleInstance(), NULL);
SendMessage(fGoButton, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
SendMessage(fGoButton, TB_SETMAXTEXTROWS, 1, 0);
SendMessage(fGoButton, TB_SETIMAGELIST, 0, reinterpret_cast<LPARAM>(normalImagelist));
SendMessage(fGoButton, TB_SETHOTIMAGELIST, 0, reinterpret_cast<LPARAM>(hotImageList));
SendMessage(fGoButton, TB_ADDSTRINGW,
reinterpret_cast<WPARAM>(_AtlBaseModule.GetResourceInstance()), IDS_GOBUTTONLABEL);
SendMessage(fGoButton, TB_ADDBUTTONSW, 1, (LPARAM)&buttonInfo);
fGoButton = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAMEW, 0, WS_CHILD | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | TBSTYLE_LIST | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | CCS_NODIVIDER |
CCS_NOPARENTALIGN | CCS_NORESIZE,
0, 0, 0, 0, m_hWnd, NULL, _AtlBaseModule.GetModuleInstance(), NULL);
SendMessage(fGoButton, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
SendMessage(fGoButton, TB_SETMAXTEXTROWS, 1, 0);
SendMessage(fGoButton, TB_SETIMAGELIST, 0, reinterpret_cast<LPARAM>(normalImagelist));
SendMessage(fGoButton, TB_SETHOTIMAGELIST, 0, reinterpret_cast<LPARAM>(hotImageList));
SendMessage(fGoButton, TB_ADDSTRINGW,
reinterpret_cast<WPARAM>(_AtlBaseModule.GetResourceInstance()), IDS_GOBUTTONLABEL);
SendMessage(fGoButton, TB_ADDBUTTONSW, 1, (LPARAM)&buttonInfo);
return hResult;
return hResult;
}
HRESULT STDMETHODCALLTYPE CAddressBand::GetSite(REFIID riid, void **ppvSite)
{
if (fSite == NULL)
return E_FAIL;
return fSite->QueryInterface(riid, ppvSite);
if (fSite == NULL)
return E_FAIL;
return fSite->QueryInterface(riid, ppvSite);
}
HRESULT STDMETHODCALLTYPE CAddressBand::GetWindow(HWND *lphwnd)
{
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CAddressBand::ContextSensitiveHelp(BOOL fEnterMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::CloseDW(DWORD dwReserved)
@ -215,9 +215,9 @@ HRESULT STDMETHODCALLTYPE CAddressBand::CloseDW(DWORD dwReserved)
}
HRESULT STDMETHODCALLTYPE CAddressBand::ResizeBorderDW(
const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::ShowDW(BOOL fShow)
@ -233,293 +233,293 @@ HRESULT STDMETHODCALLTYPE CAddressBand::ShowDW(BOOL fShow)
}
HRESULT STDMETHODCALLTYPE CAddressBand::QueryStatus(
const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
CComPtr<IOleCommandTarget> oleCommandTarget;
HRESULT hResult;
CComPtr<IOleCommandTarget> oleCommandTarget;
HRESULT hResult;
hResult = fAddressEditBox->QueryInterface(IID_IOleCommandTarget, reinterpret_cast<void **>(&oleCommandTarget));
if (FAILED(hResult))
return hResult;
return oleCommandTarget->QueryStatus(pguidCmdGroup, cCmds, prgCmds, pCmdText);
hResult = fAddressEditBox->QueryInterface(IID_IOleCommandTarget, reinterpret_cast<void **>(&oleCommandTarget));
if (FAILED(hResult))
return hResult;
return oleCommandTarget->QueryStatus(pguidCmdGroup, cCmds, prgCmds, pCmdText);
}
HRESULT STDMETHODCALLTYPE CAddressBand::Exec(const GUID *pguidCmdGroup,
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
// incomplete
return E_NOTIMPL;
// incomplete
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::HasFocusIO()
{
if (GetFocus() == fEditControl || SendMessage(CB_GETDROPPEDSTATE, 0, 0))
return S_OK;
return S_FALSE;
if (GetFocus() == fEditControl || SendMessage(CB_GETDROPPEDSTATE, 0, 0))
return S_OK;
return S_FALSE;
}
HRESULT STDMETHODCALLTYPE CAddressBand::TranslateAcceleratorIO(LPMSG lpMsg)
{
// incomplete
return S_FALSE;
// incomplete
return S_FALSE;
}
HRESULT STDMETHODCALLTYPE CAddressBand::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
CComPtr<IInputObjectSite> inputObjectSite;
HRESULT hResult;
CComPtr<IInputObjectSite> inputObjectSite;
HRESULT hResult;
if (fActivate)
{
hResult = fSite->QueryInterface(IID_IInputObjectSite, reinterpret_cast<void **>(&inputObjectSite));
if (FAILED(hResult))
return hResult;
hResult = inputObjectSite->OnFocusChangeIS(static_cast<IDeskBand *>(this), fActivate);
SetFocus();
}
return S_OK;
if (fActivate)
{
hResult = fSite->QueryInterface(IID_IInputObjectSite, reinterpret_cast<void **>(&inputObjectSite));
if (FAILED(hResult))
return hResult;
hResult = inputObjectSite->OnFocusChangeIS(static_cast<IDeskBand *>(this), fActivate);
SetFocus();
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CAddressBand::OnWinEvent(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{
CComPtr<IWinEventHandler> winEventHandler;
HRESULT hResult;
CComPtr<IWinEventHandler> winEventHandler;
HRESULT hResult;
switch (uMsg)
{
case WM_WININICHANGE:
break;
case WM_COMMAND:
if (wParam == IDM_TOOLBARS_GOBUTTON)
{
// toggle whether the Go button is displayed
// setting is Yes or No, stored in key "Software\Microsoft\Internet Explorer\Main" in value ShowGoButton
// broadcast change notification to all explorer windows
}
break;
}
hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (FAILED(hResult))
return hResult;
return winEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
switch (uMsg)
{
case WM_WININICHANGE:
break;
case WM_COMMAND:
if (wParam == IDM_TOOLBARS_GOBUTTON)
{
// toggle whether the Go button is displayed
// setting is Yes or No, stored in key "Software\Microsoft\Internet Explorer\Main" in value ShowGoButton
// broadcast change notification to all explorer windows
}
break;
}
hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (FAILED(hResult))
return hResult;
return winEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
}
HRESULT STDMETHODCALLTYPE CAddressBand::IsWindowOwner(HWND hWnd)
{
CComPtr<IWinEventHandler> winEventHandler;
HRESULT hResult;
CComPtr<IWinEventHandler> winEventHandler;
HRESULT hResult;
hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (FAILED(hResult))
return hResult;
return winEventHandler->IsWindowOwner(hWnd);
hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (FAILED(hResult))
return hResult;
return winEventHandler->IsWindowOwner(hWnd);
}
HRESULT STDMETHODCALLTYPE CAddressBand::FileSysChange(long param8, long paramC)
{
CComPtr<IAddressBand> addressBand;
HRESULT hResult;
CComPtr<IAddressBand> addressBand;
HRESULT hResult;
hResult = fAddressEditBox->QueryInterface(IID_IAddressBand, reinterpret_cast<void **>(&addressBand));
if (FAILED(hResult))
return hResult;
return addressBand->FileSysChange(param8, paramC);
hResult = fAddressEditBox->QueryInterface(IID_IAddressBand, reinterpret_cast<void **>(&addressBand));
if (FAILED(hResult))
return hResult;
return addressBand->FileSysChange(param8, paramC);
}
HRESULT STDMETHODCALLTYPE CAddressBand::Refresh(long param8)
{
CComPtr<IAddressBand> addressBand;
HRESULT hResult;
CComPtr<IAddressBand> addressBand;
HRESULT hResult;
hResult = fAddressEditBox->QueryInterface(IID_IAddressBand, reinterpret_cast<void **>(&addressBand));
if (FAILED(hResult))
return hResult;
return addressBand->Refresh(param8);
hResult = fAddressEditBox->QueryInterface(IID_IAddressBand, reinterpret_cast<void **>(&addressBand));
if (FAILED(hResult))
return hResult;
return addressBand->Refresh(param8);
}
HRESULT STDMETHODCALLTYPE CAddressBand::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::GetClassID(CLSID *pClassID)
{
if (pClassID == NULL)
return E_POINTER;
*pClassID = CLSID_SH_AddressBand;
return S_OK;
if (pClassID == NULL)
return E_POINTER;
*pClassID = CLSID_SH_AddressBand;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CAddressBand::IsDirty()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::Load(IStream *pStm)
{
// incomplete
return E_NOTIMPL;
// incomplete
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::Save(IStream *pStm, BOOL fClearDirty)
{
// incomplete
return E_NOTIMPL;
// incomplete
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressBand::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
// incomplete
return E_NOTIMPL;
// incomplete
return E_NOTIMPL;
}
LRESULT CAddressBand::OnNotifyClick(WPARAM wParam, NMHDR *notifyHeader, BOOL &bHandled)
{
if (notifyHeader->hwndFrom == fGoButton)
{
SendMessage(fEditControl, WM_KEYDOWN, 13, 0);
SendMessage(fEditControl, WM_KEYUP, 13, 0);
}
return 0;
if (notifyHeader->hwndFrom == fGoButton)
{
SendMessage(fEditControl, WM_KEYDOWN, 13, 0);
SendMessage(fEditControl, WM_KEYUP, 13, 0);
}
return 0;
}
LRESULT CAddressBand::OnTipText(UINT idControl, NMHDR *notifyHeader, BOOL &bHandled)
{
if (notifyHeader->hwndFrom == fGoButton)
{
// TODO
// Go to "destination path"
}
return 0;
if (notifyHeader->hwndFrom == fGoButton)
{
// TODO
// Go to "destination path"
}
return 0;
}
LRESULT CAddressBand::OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
POINT pt;
POINT ptOrig;
HWND parentWindow;
LRESULT result;
POINT pt;
POINT ptOrig;
HWND parentWindow;
LRESULT result;
if (fGoButtonShown == false)
{
bHandled = FALSE;
return 0;
}
pt.x = 0;
pt.y = 0;
parentWindow = GetParent();
::MapWindowPoints(m_hWnd, parentWindow, &pt, 1);
OffsetWindowOrgEx(reinterpret_cast<HDC>(wParam), pt.x, pt.y, &ptOrig);
result = SendMessage(parentWindow, WM_ERASEBKGND, wParam, 0);
SetWindowOrgEx(reinterpret_cast<HDC>(wParam), ptOrig.x, ptOrig.y, NULL);
if (result == 0)
{
bHandled = FALSE;
return 0;
}
return result;
if (fGoButtonShown == false)
{
bHandled = FALSE;
return 0;
}
pt.x = 0;
pt.y = 0;
parentWindow = GetParent();
::MapWindowPoints(m_hWnd, parentWindow, &pt, 1);
OffsetWindowOrgEx(reinterpret_cast<HDC>(wParam), pt.x, pt.y, &ptOrig);
result = SendMessage(parentWindow, WM_ERASEBKGND, wParam, 0);
SetWindowOrgEx(reinterpret_cast<HDC>(wParam), ptOrig.x, ptOrig.y, NULL);
if (result == 0)
{
bHandled = FALSE;
return 0;
}
return result;
}
LRESULT CAddressBand::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
RECT goButtonBounds;
RECT buttonBounds;
long buttonWidth;
long buttonHeight;
RECT comboBoxBounds;
long newHeight;
long newWidth;
RECT goButtonBounds;
RECT buttonBounds;
long buttonWidth;
long buttonHeight;
RECT comboBoxBounds;
long newHeight;
long newWidth;
if (fGoButtonShown == false)
{
bHandled = FALSE;
return 0;
}
if (fGoButtonShown == false)
{
bHandled = FALSE;
return 0;
}
newHeight = HIWORD(lParam);
newWidth = LOWORD(lParam);
newHeight = HIWORD(lParam);
newWidth = LOWORD(lParam);
SendMessage(fGoButton, TB_GETITEMRECT, 0, reinterpret_cast<LPARAM>(&buttonBounds));
buttonWidth = buttonBounds.right - buttonBounds.left;
buttonHeight = buttonBounds.bottom - buttonBounds.top;
SendMessage(fGoButton, TB_GETITEMRECT, 0, reinterpret_cast<LPARAM>(&buttonBounds));
buttonWidth = buttonBounds.right - buttonBounds.left;
buttonHeight = buttonBounds.bottom - buttonBounds.top;
DefWindowProc(WM_SIZE, wParam, MAKELONG(newWidth - buttonWidth - 2, newHeight));
::GetWindowRect(fComboBox, &comboBoxBounds);
::SetWindowPos(fGoButton, NULL, newWidth - buttonWidth, (comboBoxBounds.bottom - comboBoxBounds.top - buttonHeight) / 2,
buttonWidth, buttonHeight, SWP_NOOWNERZORDER | SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_NOZORDER);
DefWindowProc(WM_SIZE, wParam, MAKELONG(newWidth - buttonWidth - 2, newHeight));
::GetWindowRect(fComboBox, &comboBoxBounds);
::SetWindowPos(fGoButton, NULL, newWidth - buttonWidth, (comboBoxBounds.bottom - comboBoxBounds.top - buttonHeight) / 2,
buttonWidth, buttonHeight, SWP_NOOWNERZORDER | SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_NOZORDER);
goButtonBounds.left = newWidth - buttonWidth;
goButtonBounds.top = 0;
goButtonBounds.right = newWidth - buttonWidth;
goButtonBounds.bottom = newHeight;
InvalidateRect(&goButtonBounds, TRUE);
goButtonBounds.left = newWidth - buttonWidth;
goButtonBounds.top = 0;
goButtonBounds.right = newWidth - buttonWidth;
goButtonBounds.bottom = newHeight;
InvalidateRect(&goButtonBounds, TRUE);
SendMessage(fComboBox, CB_SETDROPPEDWIDTH, 200, 0);
return 0;
SendMessage(fComboBox, CB_SETDROPPEDWIDTH, 200, 0);
return 0;
}
LRESULT CAddressBand::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
RECT goButtonBounds;
RECT buttonBounds;
long buttonWidth;
long buttonHeight;
RECT comboBoxBounds;
WINDOWPOS positionInfoCopy;
long newHeight;
long newWidth;
RECT goButtonBounds;
RECT buttonBounds;
long buttonWidth;
long buttonHeight;
RECT comboBoxBounds;
WINDOWPOS positionInfoCopy;
long newHeight;
long newWidth;
if (!fGoButtonShown)
{
bHandled = FALSE;
return 0;
}
if (!fGoButtonShown)
{
bHandled = FALSE;
return 0;
}
positionInfoCopy = *reinterpret_cast<WINDOWPOS *>(lParam);
newHeight = positionInfoCopy.cy;
newWidth = positionInfoCopy.cx;
SendMessage(fGoButton, TB_GETITEMRECT, 0, reinterpret_cast<LPARAM>(&buttonBounds));
positionInfoCopy = *reinterpret_cast<WINDOWPOS *>(lParam);
newHeight = positionInfoCopy.cy;
newWidth = positionInfoCopy.cx;
SendMessage(fGoButton, TB_GETITEMRECT, 0, reinterpret_cast<LPARAM>(&buttonBounds));
buttonWidth = buttonBounds.right - buttonBounds.left;
buttonHeight = buttonBounds.bottom - buttonBounds.top;
positionInfoCopy.cx = newWidth - 2 - buttonWidth;
DefWindowProc(WM_WINDOWPOSCHANGING, wParam, reinterpret_cast<LPARAM>(&positionInfoCopy));
::GetWindowRect(fComboBox, &comboBoxBounds);
::SetWindowPos(fGoButton, NULL, newWidth - buttonWidth, (comboBoxBounds.bottom - comboBoxBounds.top - buttonHeight) / 2,
buttonWidth, buttonHeight, SWP_NOOWNERZORDER | SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_NOZORDER);
buttonWidth = buttonBounds.right - buttonBounds.left;
buttonHeight = buttonBounds.bottom - buttonBounds.top;
positionInfoCopy.cx = newWidth - 2 - buttonWidth;
DefWindowProc(WM_WINDOWPOSCHANGING, wParam, reinterpret_cast<LPARAM>(&positionInfoCopy));
::GetWindowRect(fComboBox, &comboBoxBounds);
::SetWindowPos(fGoButton, NULL, newWidth - buttonWidth, (comboBoxBounds.bottom - comboBoxBounds.top - buttonHeight) / 2,
buttonWidth, buttonHeight, SWP_NOOWNERZORDER | SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_NOZORDER);
goButtonBounds.left = newWidth - buttonWidth;
goButtonBounds.top = 0;
goButtonBounds.right = newWidth - buttonWidth;
goButtonBounds.bottom = newHeight;
InvalidateRect(&goButtonBounds, TRUE);
goButtonBounds.left = newWidth - buttonWidth;
goButtonBounds.top = 0;
goButtonBounds.right = newWidth - buttonWidth;
goButtonBounds.bottom = newHeight;
InvalidateRect(&goButtonBounds, TRUE);
SendMessage(fComboBox, CB_SETDROPPEDWIDTH, 200, 0);
return 0;
SendMessage(fComboBox, CB_SETDROPPEDWIDTH, 200, 0);
return 0;
}
HRESULT CreateAddressBand(REFIID riid, void **ppv)
{
CComObject<CAddressBand> *theMenuBar;
HRESULT hResult;
CComObject<CAddressBand> *theMenuBar;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CAddressBand>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CAddressBand>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
}

View file

@ -21,112 +21,112 @@
#pragma once
class CAddressBand :
public CWindowImpl<CAddressBand, CWindow, CControlWinTraits>,
public CComCoClass<CAddressBand, &CLSID_SH_AddressBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IOleCommandTarget,
public IObjectWithSite,
public IInputObject,
public IWinEventHandler,
public IAddressBand,
public IServiceProvider,
public IInputObjectSite,
public IPersistStream
public CWindowImpl<CAddressBand, CWindow, CControlWinTraits>,
public CComCoClass<CAddressBand, &CLSID_SH_AddressBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IOleCommandTarget,
public IObjectWithSite,
public IInputObject,
public IWinEventHandler,
public IAddressBand,
public IServiceProvider,
public IInputObjectSite,
public IPersistStream
{
private:
CComPtr<IDockingWindowSite> fSite;
CComPtr<IAddressEditBox> fAddressEditBox;
HWND fEditControl;
HWND fGoButton;
HWND fComboBox;
bool fGoButtonShown;
CComPtr<IDockingWindowSite> fSite;
CComPtr<IAddressEditBox> fAddressEditBox;
HWND fEditControl;
HWND fGoButton;
HWND fComboBox;
bool fGoButtonShown;
public:
CAddressBand();
~CAddressBand();
CAddressBand();
~CAddressBand();
private:
void FocusChange(BOOL bFocus);
void FocusChange(BOOL bFocus);
public:
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi);
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IAddressBand methods ***
virtual HRESULT STDMETHODCALLTYPE FileSysChange(long param8, long paramC);
virtual HRESULT STDMETHODCALLTYPE Refresh(long param8);
// *** IAddressBand methods ***
virtual HRESULT STDMETHODCALLTYPE FileSysChange(long param8, long paramC);
virtual HRESULT STDMETHODCALLTYPE Refresh(long param8);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IInputObjectSite methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
// *** IInputObjectSite methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// message handlers
LRESULT OnNotifyClick(WPARAM wParam, NMHDR *notifyHeader, BOOL &bHandled);
LRESULT OnTipText(UINT idControl, NMHDR *notifyHeader, BOOL &bHandled);
LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// message handlers
LRESULT OnNotifyClick(WPARAM wParam, NMHDR *notifyHeader, BOOL &bHandled);
LRESULT OnTipText(UINT idControl, NMHDR *notifyHeader, BOOL &bHandled);
LRESULT OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
BEGIN_MSG_MAP(CAddressBand)
NOTIFY_CODE_HANDLER(NM_CLICK, OnNotifyClick)
NOTIFY_CODE_HANDLER(TTN_NEEDTEXTW, OnTipText)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, OnWindowPosChanging)
END_MSG_MAP()
BEGIN_MSG_MAP(CAddressBand)
NOTIFY_CODE_HANDLER(NM_CLICK, OnNotifyClick)
NOTIFY_CODE_HANDLER(TTN_NEEDTEXTW, OnTipText)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, OnWindowPosChanging)
END_MSG_MAP()
DECLARE_REGISTRY_RESOURCEID(IDR_ADDRESSBAND)
DECLARE_NOT_AGGREGATABLE(CAddressBand)
DECLARE_REGISTRY_RESOURCEID(IDR_ADDRESSBAND)
DECLARE_NOT_AGGREGATABLE(CAddressBand)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CAddressBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IAddressBand, IAddressBand)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
BEGIN_COM_MAP(CAddressBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IAddressBand, IAddressBand)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
};

View file

@ -25,21 +25,21 @@ This class handles the combo box of the address band.
/*
TODO:
Add auto completion support
Subclass windows in Init method
Connect to browser connection point
Handle navigation complete messages to set edit box text
Handle listbox dropdown message and fill contents
Add drag and drop of icon in edit box
Handle enter in edit box to browse to typed path
Handle change notifies to update appropriately
Add handling of enter in edit box
Fix so selection in combo listbox navigates
Fix so editing text and typing enter navigates
Subclass windows in Init method
Connect to browser connection point
Handle navigation complete messages to set edit box text
Handle listbox dropdown message and fill contents
Add drag and drop of icon in edit box
Handle enter in edit box to browse to typed path
Handle change notifies to update appropriately
Add handling of enter in edit box
Fix so selection in combo listbox navigates
Fix so editing text and typing enter navigates
*/
CAddressEditBox::CAddressEditBox() :
fEditWindow(NULL, this, 1),
fComboBoxExWindow(NULL, this, 2)
fEditWindow(NULL, this, 1),
fComboBoxExWindow(NULL, this, 2)
{
}
@ -49,138 +49,138 @@ CAddressEditBox::~CAddressEditBox()
HRESULT STDMETHODCALLTYPE CAddressEditBox::SetOwner(IUnknown *)
{
// connect to browser connection point
return E_NOTIMPL;
// connect to browser connection point
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::FileSysChange(long param8, long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Refresh(long param8)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Init(HWND comboboxEx, HWND editControl, long param14, IUnknown *param18)
{
fComboBoxExWindow.SubclassWindow(comboboxEx);
fEditWindow.SubclassWindow(editControl);
return S_OK;
fComboBoxExWindow.SubclassWindow(comboboxEx);
fEditWindow.SubclassWindow(editControl);
return S_OK;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::SetCurrentDir(long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::ParseNow(long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Execute(long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Save(long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::OnWinEvent(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{
// handle fill of listbox here
return E_NOTIMPL;
// handle fill of listbox here
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::IsWindowOwner(HWND hWnd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::QueryStatus(
const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::GetTypeInfoCount(UINT *pctinfo)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::GetIDsOfNames(
REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid,
WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
// on navigate complete, change edit section of combobox
return E_NOTIMPL;
// on navigate complete, change edit section of combobox
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::GetClassID(CLSID *pClassID)
{
if (pClassID == NULL)
return E_POINTER;
*pClassID = CLSID_AddressEditBox;
return S_OK;
if (pClassID == NULL)
return E_POINTER;
*pClassID = CLSID_AddressEditBox;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::IsDirty()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Load(IStream *pStm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::Save(IStream *pStm, BOOL fClearDirty)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CAddressEditBox::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT CreateAddressEditBox(REFIID riid, void **ppv)
{
CComObject<CAddressEditBox> *theMenuBar;
HRESULT hResult;
CComObject<CAddressEditBox> *theMenuBar;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CAddressEditBox>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CAddressEditBox>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
}

View file

@ -21,89 +21,89 @@
#pragma once
class CAddressEditBox :
public CWindowImpl<CAddressEditBox, CWindow, CControlWinTraits>,
public CComCoClass<CAddressEditBox, &CLSID_AddressEditBox>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellService,
public IAddressBand,
public IAddressEditBox,
public IWinEventHandler,
public IOleCommandTarget,
public IDispatch,
public IPersistStream
public CWindowImpl<CAddressEditBox, CWindow, CControlWinTraits>,
public CComCoClass<CAddressEditBox, &CLSID_AddressEditBox>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellService,
public IAddressBand,
public IAddressEditBox,
public IWinEventHandler,
public IOleCommandTarget,
public IDispatch,
public IPersistStream
{
private:
CContainedWindow fEditWindow;
CContainedWindow fComboBoxExWindow;
CContainedWindow fEditWindow;
CContainedWindow fComboBoxExWindow;
public:
CAddressEditBox();
~CAddressEditBox();
CAddressEditBox();
~CAddressEditBox();
private:
public:
// *** IShellService methods ***
// *** IShellService methods ***
virtual HRESULT STDMETHODCALLTYPE SetOwner(IUnknown *);
// *** IAddressBand methods ***
virtual HRESULT STDMETHODCALLTYPE FileSysChange(long param8, long paramC);
virtual HRESULT STDMETHODCALLTYPE Refresh(long param8);
// *** IAddressBand methods ***
virtual HRESULT STDMETHODCALLTYPE FileSysChange(long param8, long paramC);
virtual HRESULT STDMETHODCALLTYPE Refresh(long param8);
// *** IAddressEditBox methods ***
virtual HRESULT STDMETHODCALLTYPE Init(HWND comboboxEx, HWND editControl, long param14, IUnknown *param18);
virtual HRESULT STDMETHODCALLTYPE SetCurrentDir(long paramC);
virtual HRESULT STDMETHODCALLTYPE ParseNow(long paramC);
virtual HRESULT STDMETHODCALLTYPE Execute(long paramC);
virtual HRESULT STDMETHODCALLTYPE Save(long paramC);
// *** IAddressEditBox methods ***
virtual HRESULT STDMETHODCALLTYPE Init(HWND comboboxEx, HWND editControl, long param14, IUnknown *param18);
virtual HRESULT STDMETHODCALLTYPE SetCurrentDir(long paramC);
virtual HRESULT STDMETHODCALLTYPE ParseNow(long paramC);
virtual HRESULT STDMETHODCALLTYPE Execute(long paramC);
virtual HRESULT STDMETHODCALLTYPE Save(long paramC);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// message handlers
// LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// LRESULT OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// message handlers
// LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// LRESULT OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
DECLARE_REGISTRY_RESOURCEID(IDR_ADDRESSEDITBOX)
DECLARE_NOT_AGGREGATABLE(CAddressEditBox)
DECLARE_REGISTRY_RESOURCEID(IDR_ADDRESSEDITBOX)
DECLARE_NOT_AGGREGATABLE(CAddressEditBox)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_MSG_MAP(CAddressEditBox)
// MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
// MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
// ALT_MSG_MAP(1)
// MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocusSaveButton)
// ALT_MSG_MAP(2)
// MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocusSelectButton)
END_MSG_MAP()
BEGIN_MSG_MAP(CAddressEditBox)
// MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
// MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
// ALT_MSG_MAP(1)
// MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocusSaveButton)
// ALT_MSG_MAP(2)
// MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocusSelectButton)
END_MSG_MAP()
BEGIN_COM_MAP(CAddressEditBox)
COM_INTERFACE_ENTRY_IID(IID_IShellService, IShellService)
COM_INTERFACE_ENTRY_IID(IID_IAddressBand, IAddressBand)
COM_INTERFACE_ENTRY_IID(IID_IAddressEditBox, IAddressEditBox)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
BEGIN_COM_MAP(CAddressEditBox)
COM_INTERFACE_ENTRY_IID(IID_IShellService, IShellService)
COM_INTERFACE_ENTRY_IID(IID_IAddressBand, IAddressBand)
COM_INTERFACE_ENTRY_IID(IID_IAddressEditBox, IAddressEditBox)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
};

View file

@ -36,116 +36,116 @@ CBandProxy::~CBandProxy()
HRESULT CBandProxy::FindBrowserWindow(IUnknown **browser)
{
CComPtr<IServiceProvider> serviceProvider;
CComPtr<IWebBrowser2> webBrowser;
HRESULT hResult;
CComPtr<IServiceProvider> serviceProvider;
CComPtr<IWebBrowser2> webBrowser;
HRESULT hResult;
if (browser == NULL)
return E_POINTER;
hResult = fSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
hResult = serviceProvider->QueryService(
SID_IWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void **>(&webBrowser));
if (FAILED(hResult))
return hResult;
*browser = webBrowser.Detach();
return S_OK;
if (browser == NULL)
return E_POINTER;
hResult = fSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
hResult = serviceProvider->QueryService(
SID_IWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void **>(&webBrowser));
if (FAILED(hResult))
return hResult;
*browser = webBrowser.Detach();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBandProxy::SetSite(IUnknown *paramC)
{
fSite = paramC;
return S_OK;
fSite = paramC;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBandProxy::CreateNewWindow(long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBandProxy::GetBrowserWindow(IUnknown **paramC)
{
if (paramC == NULL)
return E_POINTER;
return FindBrowserWindow(paramC);
if (paramC == NULL)
return E_POINTER;
return FindBrowserWindow(paramC);
}
HRESULT STDMETHODCALLTYPE CBandProxy::IsConnected()
{
CComPtr<IUnknown> webBrowser;
HRESULT hResult;
CComPtr<IUnknown> webBrowser;
HRESULT hResult;
hResult = FindBrowserWindow(&webBrowser);
if (FAILED(hResult) || webBrowser.p == NULL)
return S_FALSE;
return S_OK;
hResult = FindBrowserWindow(&webBrowser);
if (FAILED(hResult) || webBrowser.p == NULL)
return S_FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBandProxy::NavigateToPIDL(LPCITEMIDLIST pidl)
{
CComPtr<IOleWindow> oleWindow;
CComPtr<IServiceProvider> serviceProvider;
CComPtr<IUnknown> webBrowserUnknown;
CComPtr<IWebBrowser2> webBrowser;
HWND browserWindow;
CComVariant args;
CComVariant emptyVariant;
unsigned int arraySize;
HRESULT hResult;
CComPtr<IOleWindow> oleWindow;
CComPtr<IServiceProvider> serviceProvider;
CComPtr<IUnknown> webBrowserUnknown;
CComPtr<IWebBrowser2> webBrowser;
HWND browserWindow;
CComVariant args;
CComVariant emptyVariant;
unsigned int arraySize;
HRESULT hResult;
hResult = FindBrowserWindow(&webBrowserUnknown);
if (FAILED(hResult))
return hResult;
hResult = webBrowserUnknown->QueryInterface(IID_IWebBrowserApp, reinterpret_cast<void **>(&webBrowser));
if (FAILED(hResult))
return hResult;
hResult = webBrowser->put_Visible(TRUE);
hResult = webBrowser->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (SUCCEEDED(hResult))
{
hResult = serviceProvider->QueryService(SID_STopLevelBrowser,
IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
{
hResult = oleWindow->GetWindow(&browserWindow);
if (IsIconic(browserWindow))
ShowWindow(browserWindow, SW_RESTORE);
}
}
arraySize = ILGetSize(pidl);
V_VT(&args) = VT_ARRAY | VT_UI1;
V_ARRAY(&args) = SafeArrayCreateVector(VT_UI1, 0, arraySize);
if (V_ARRAY(&args) == NULL)
return E_OUTOFMEMORY;
memcpy(V_ARRAY(&args)->pvData, pidl, arraySize);
hResult = webBrowser->Navigate2(&args, &emptyVariant, &emptyVariant, &emptyVariant, &emptyVariant);
if (FAILED(hResult))
return hResult;
return S_OK;
hResult = FindBrowserWindow(&webBrowserUnknown);
if (FAILED(hResult))
return hResult;
hResult = webBrowserUnknown->QueryInterface(IID_IWebBrowserApp, reinterpret_cast<void **>(&webBrowser));
if (FAILED(hResult))
return hResult;
hResult = webBrowser->put_Visible(TRUE);
hResult = webBrowser->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (SUCCEEDED(hResult))
{
hResult = serviceProvider->QueryService(SID_STopLevelBrowser,
IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
{
hResult = oleWindow->GetWindow(&browserWindow);
if (IsIconic(browserWindow))
ShowWindow(browserWindow, SW_RESTORE);
}
}
arraySize = ILGetSize(pidl);
V_VT(&args) = VT_ARRAY | VT_UI1;
V_ARRAY(&args) = SafeArrayCreateVector(VT_UI1, 0, arraySize);
if (V_ARRAY(&args) == NULL)
return E_OUTOFMEMORY;
memcpy(V_ARRAY(&args)->pvData, pidl, arraySize);
hResult = webBrowser->Navigate2(&args, &emptyVariant, &emptyVariant, &emptyVariant, &emptyVariant);
if (FAILED(hResult))
return hResult;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBandProxy::NavigateToURL(long paramC, long param10)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT CreateBandProxy(REFIID riid, void **ppv)
{
CComObject<CBandProxy> *theBandProxy;
HRESULT hResult;
CComObject<CBandProxy> *theBandProxy;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theBandProxy = new CComObject<CBandProxy>);
if (theBandProxy == NULL)
return E_OUTOFMEMORY;
hResult = theBandProxy->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theBandProxy;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theBandProxy = new CComObject<CBandProxy>);
if (theBandProxy == NULL)
return E_OUTOFMEMORY;
hResult = theBandProxy->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theBandProxy;
return hResult;
}
return S_OK;
}

View file

@ -21,31 +21,31 @@
#pragma once
class CBandProxy :
public CComCoClass<CBandProxy, &CLSID_BandProxy>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IBandProxy
public CComCoClass<CBandProxy, &CLSID_BandProxy>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IBandProxy
{
private:
CComPtr<IUnknown> fSite;
CComPtr<IUnknown> fSite;
public:
CBandProxy();
~CBandProxy();
HRESULT FindBrowserWindow(IUnknown **browser);
CBandProxy();
~CBandProxy();
HRESULT FindBrowserWindow(IUnknown **browser);
// *** IBandProxy methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *paramC);
virtual HRESULT STDMETHODCALLTYPE CreateNewWindow(long paramC);
virtual HRESULT STDMETHODCALLTYPE GetBrowserWindow(IUnknown **paramC);
virtual HRESULT STDMETHODCALLTYPE IsConnected();
virtual HRESULT STDMETHODCALLTYPE NavigateToPIDL(LPCITEMIDLIST pidl);
virtual HRESULT STDMETHODCALLTYPE NavigateToURL(long paramC, long param10);
// *** IBandProxy methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *paramC);
virtual HRESULT STDMETHODCALLTYPE CreateNewWindow(long paramC);
virtual HRESULT STDMETHODCALLTYPE GetBrowserWindow(IUnknown **paramC);
virtual HRESULT STDMETHODCALLTYPE IsConnected();
virtual HRESULT STDMETHODCALLTYPE NavigateToPIDL(LPCITEMIDLIST pidl);
virtual HRESULT STDMETHODCALLTYPE NavigateToURL(long paramC, long param10);
DECLARE_REGISTRY_RESOURCEID(IDR_BANDPROXY)
DECLARE_NOT_AGGREGATABLE(CBandProxy)
DECLARE_REGISTRY_RESOURCEID(IDR_BANDPROXY)
DECLARE_NOT_AGGREGATABLE(CBandProxy)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CBandProxy)
COM_INTERFACE_ENTRY_IID(IID_IBandProxy, IBandProxy)
END_COM_MAP()
BEGIN_COM_MAP(CBandProxy)
COM_INTERFACE_ENTRY_IID(IID_IBandProxy, IBandProxy)
END_COM_MAP()
};

View file

@ -324,7 +324,7 @@ HRESULT STDMETHODCALLTYPE CBandSiteBase::AddBand(IUnknown *punk)
hRet = E_OUTOFMEMORY;
goto Cleanup;
}
NewBand = reinterpret_cast<struct BandObject *>(CoTaskMemAlloc(NewAllocated * sizeof(struct BandObject)));
if (NewBand == NULL)
@ -680,7 +680,7 @@ HRESULT STDMETHODCALLTYPE CBandSiteBase::SetModeDBC(DWORD dwMode)
{
SetWindowLongPtr(fRebarWindow, GWL_STYLE, dwPrevStyle);
}
return S_OK;
}

View file

@ -1,8 +1,8 @@
/*
* Rebar band site
* Rebar band site
*
* Copyright 2007 Hervé Poussineau
* Copyright 2009 Andrew Hill
* Copyright 2007 Hervé Poussineau
* Copyright 2009 Andrew Hill
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -22,129 +22,129 @@
#pragma once
class CBandSiteBase :
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IBandSite,
public IWinEventHandler,
public IDeskBarClient,
public IOleCommandTarget,
public IInputObject,
public IInputObjectSite,
public IServiceProvider,
public IPersistStream,
public IDropTarget,
public IBandSiteHelper
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IBandSite,
public IWinEventHandler,
public IDeskBarClient,
public IOleCommandTarget,
public IInputObject,
public IInputObjectSite,
public IServiceProvider,
public IPersistStream,
public IDropTarget,
public IBandSiteHelper
{
private:
struct BandObject
{
IDeskBand *DeskBand;
IOleWindow *OleWindow;
IWinEventHandler *WndEvtHandler;
DESKBANDINFO dbi;
};
struct BandObject
{
IDeskBand *DeskBand;
IOleWindow *OleWindow;
IWinEventHandler *WndEvtHandler;
DESKBANDINFO dbi;
};
LONG fBandsCount;
LONG fBandsAllocated;
struct BandObject *fBands;
HWND fRebarWindow;
CComPtr<IOleWindow> fOleWindow;
LONG fBandsCount;
LONG fBandsAllocated;
struct BandObject *fBands;
HWND fRebarWindow;
CComPtr<IOleWindow> fOleWindow;
public:
CBandSiteBase();
~CBandSiteBase();
CBandSiteBase();
~CBandSiteBase();
// *** IBandSite methods ***
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName);
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
// *** IBandSite methods ***
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName);
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDeskBarClient methods ***
virtual HRESULT STDMETHODCALLTYPE SetDeskBarSite(IUnknown *punkSite);
virtual HRESULT STDMETHODCALLTYPE SetModeDBC(DWORD dwMode);
virtual HRESULT STDMETHODCALLTYPE UIActivateDBC(DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE GetSize(DWORD dwWhich, LPRECT prc);
// *** IDeskBarClient methods ***
virtual HRESULT STDMETHODCALLTYPE SetDeskBarSite(IUnknown *punkSite);
virtual HRESULT STDMETHODCALLTYPE SetModeDBC(DWORD dwMode);
virtual HRESULT STDMETHODCALLTYPE UIActivateDBC(DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE GetSize(DWORD dwWhich, LPRECT prc);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IInputObjectSite methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(struct IUnknown *paramC, int param10);
// *** IInputObjectSite methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(struct IUnknown *paramC, int param10);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IDropTarget methods ***
virtual HRESULT STDMETHODCALLTYPE DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragLeave();
virtual HRESULT STDMETHODCALLTYPE Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
// *** IDropTarget methods ***
virtual HRESULT STDMETHODCALLTYPE DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragLeave();
virtual HRESULT STDMETHODCALLTYPE Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
// *** IBandSiteHelper methods ***
virtual HRESULT STDMETHODCALLTYPE LoadFromStreamBS(IStream *, const GUID &, void **);
virtual HRESULT STDMETHODCALLTYPE SaveToStreamBS(IUnknown *, IStream *);
// *** IBandSiteHelper methods ***
virtual HRESULT STDMETHODCALLTYPE LoadFromStreamBS(IStream *, const GUID &, void **);
virtual HRESULT STDMETHODCALLTYPE SaveToStreamBS(IUnknown *, IStream *);
private:
UINT GetBandID(struct BandObject *Band);
struct BandObject *GetBandByID(DWORD dwBandID);
void FreeBand(struct BandObject *Band);
DWORD GetBandSiteViewMode();
VOID BuildRebarBandInfo(struct BandObject *Band, REBARBANDINFOW *prbi);
HRESULT UpdateSingleBand(struct BandObject *Band);
HRESULT UpdateAllBands();
HRESULT UpdateBand(DWORD dwBandID);
struct BandObject *GetBandFromHwnd(HWND hwnd);
UINT GetBandID(struct BandObject *Band);
struct BandObject *GetBandByID(DWORD dwBandID);
void FreeBand(struct BandObject *Band);
DWORD GetBandSiteViewMode();
VOID BuildRebarBandInfo(struct BandObject *Band, REBARBANDINFOW *prbi);
HRESULT UpdateSingleBand(struct BandObject *Band);
HRESULT UpdateAllBands();
HRESULT UpdateBand(DWORD dwBandID);
struct BandObject *GetBandFromHwnd(HWND hwnd);
BEGIN_COM_MAP(CBandSiteBase)
COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDeskBarClient, IDeskBarClient)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
COM_INTERFACE_ENTRY_IID(IID_IBandSiteHelper, IBandSiteHelper)
END_COM_MAP()
BEGIN_COM_MAP(CBandSiteBase)
COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDeskBarClient, IDeskBarClient)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
COM_INTERFACE_ENTRY_IID(IID_IBandSiteHelper, IBandSiteHelper)
END_COM_MAP()
};
class CBandSite :
public CComCoClass<CBandSite, &CLSID_RebarBandSite>,
public CBandSiteBase
public CComCoClass<CBandSite, &CLSID_RebarBandSite>,
public CBandSiteBase
{
public:
DECLARE_REGISTRY_RESOURCEID(IDR_BANDSITE)
DECLARE_NOT_AGGREGATABLE(CBandSite)
DECLARE_REGISTRY_RESOURCEID(IDR_BANDSITE)
DECLARE_NOT_AGGREGATABLE(CBandSite)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
};

View file

@ -1,8 +1,8 @@
/*
* Band site menu
* Band site menu
*
* Copyright 2007 Hervé Poussineua
* Copyright 2009 Andrew Hill
* Copyright 2007 Hervé Poussineua
* Copyright 2009 Andrew Hill
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -38,7 +38,7 @@ HRESULT STDMETHODCALLTYPE CBandSiteMenu::SetOwner(IUnknown *pOwner)
}
HRESULT STDMETHODCALLTYPE CBandSiteMenu::QueryContextMenu(
HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
{
FIXME("(%p, %p, %p, %p, %p, %p)\n", this, hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
return E_NOTIMPL;
@ -51,7 +51,7 @@ HRESULT STDMETHODCALLTYPE CBandSiteMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpi
}
HRESULT STDMETHODCALLTYPE CBandSiteMenu::GetCommandString(UINT_PTR idCmd, UINT uType,
UINT *pwReserved, LPSTR pszName, UINT cchMax)
UINT *pwReserved, LPSTR pszName, UINT cchMax)
{
FIXME("(%p, %p, %p, %p, %p, %p)\n", this, idCmd, uType, pwReserved, pszName, cchMax);
return E_NOTIMPL;

View file

@ -1,8 +1,8 @@
/*
* Band site menu
* Band site menu
*
* Copyright 2007 Hervé Poussineua
* Copyright 2009 Andrew Hill
* Copyright 2007 Hervé Poussineua
* Copyright 2009 Andrew Hill
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -23,34 +23,34 @@
// oddly, this class also responds to QueryInterface for CLSID_BandSiteMenu by returning the vtable at offset 0
class CBandSiteMenu :
public CComCoClass<CBandSiteMenu, &CLSID_BandSiteMenu>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellService,
public IContextMenu2
public CComCoClass<CBandSiteMenu, &CLSID_BandSiteMenu>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellService,
public IContextMenu2
{
public:
CBandSiteMenu();
~CBandSiteMenu();
CBandSiteMenu();
~CBandSiteMenu();
// *** IShellService methods ***
virtual HRESULT STDMETHODCALLTYPE SetOwner(IUnknown *);
// *** IShellService methods ***
virtual HRESULT STDMETHODCALLTYPE SetOwner(IUnknown *);
// *** IContextMenu methods ***
virtual HRESULT STDMETHODCALLTYPE QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
virtual HRESULT STDMETHODCALLTYPE InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
virtual HRESULT STDMETHODCALLTYPE GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax);
// *** IContextMenu methods ***
virtual HRESULT STDMETHODCALLTYPE QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
virtual HRESULT STDMETHODCALLTYPE InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
virtual HRESULT STDMETHODCALLTYPE GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax);
// *** IContextMenu2 methods ***
virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
// *** IContextMenu2 methods ***
virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
DECLARE_REGISTRY_RESOURCEID(IDR_BANDSITEMENU)
DECLARE_NOT_AGGREGATABLE(CBandSiteMenu)
DECLARE_REGISTRY_RESOURCEID(IDR_BANDSITEMENU)
DECLARE_NOT_AGGREGATABLE(CBandSiteMenu)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CBandSiteMenu)
COM_INTERFACE_ENTRY_IID(IID_IShellService, IShellService)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
END_COM_MAP()
BEGIN_COM_MAP(CBandSiteMenu)
COM_INTERFACE_ENTRY_IID(IID_IShellService, IShellService)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
END_COM_MAP()
};

View file

@ -37,134 +37,134 @@ TODO:
*/
class CBaseBar :
public CWindowImpl<CBaseBar, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IInputObjectSite,
public IOleCommandTarget,
public IServiceProvider,
public IInputObject,
public IDeskBar,
public IDockingWindow,
public IPersistStream,
public IPersistStreamInit,
public IPersistPropertyBag,
public IObjectWithSite
public CWindowImpl<CBaseBar, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IInputObjectSite,
public IOleCommandTarget,
public IServiceProvider,
public IInputObject,
public IDeskBar,
public IDockingWindow,
public IPersistStream,
public IPersistStreamInit,
public IPersistPropertyBag,
public IObjectWithSite
{
public:
CComPtr<IUnknown> fSite;
CComPtr<IUnknown> fClient;
HWND fClientWindow;
bool fVertical;
bool fVisible;
int fNeededSize; // width or height
CComPtr<IUnknown> fSite;
CComPtr<IUnknown> fClient;
HWND fClientWindow;
bool fVertical;
bool fVisible;
int fNeededSize; // width or height
// used by resize tracking loop
bool fTracking;
POINT fLastLocation;
// used by resize tracking loop
bool fTracking;
POINT fLastLocation;
public:
CBaseBar();
~CBaseBar();
CBaseBar();
~CBaseBar();
public:
HRESULT ReserveBorderSpace();
HRESULT ReserveBorderSpace();
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IInputObjectSite specific methods ***
// *** IInputObjectSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
// *** IOleCommandTarget specific methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget specific methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IInputObject methods ***
// forward the methods to the contained active bar
// *** IInputObject methods ***
// forward the methods to the contained active bar
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IDeskBar methods ***
virtual HRESULT STDMETHODCALLTYPE SetClient(IUnknown *punkClient);
virtual HRESULT STDMETHODCALLTYPE GetClient(IUnknown **ppunkClient);
virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(LPRECT prc);
// *** IDeskBar methods ***
virtual HRESULT STDMETHODCALLTYPE SetClient(IUnknown *punkClient);
virtual HRESULT STDMETHODCALLTYPE GetClient(IUnknown **ppunkClient);
virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(LPRECT prc);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStreamInit methods ***
virtual HRESULT STDMETHODCALLTYPE InitNew();
// *** IPersistStreamInit methods ***
virtual HRESULT STDMETHODCALLTYPE InitNew();
// *** IPersistPropertyBag methods ***
virtual HRESULT STDMETHODCALLTYPE Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog);
virtual HRESULT STDMETHODCALLTYPE Save(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties);
// *** IPersistPropertyBag methods ***
virtual HRESULT STDMETHODCALLTYPE Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog);
virtual HRESULT STDMETHODCALLTYPE Save(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties);
// message handlers
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnCancelMode(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnCaptureChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// message handlers
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnCancelMode(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnCaptureChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
DECLARE_WND_CLASS_EX(_T("BaseBar"), 0, COLOR_3DFACE)
BEGIN_MSG_MAP(CBaseBar)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
MESSAGE_HANDLER(WM_CANCELMODE, OnCancelMode)
MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
MESSAGE_HANDLER(WM_CANCELMODE, OnCancelMode)
MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged)
END_MSG_MAP()
BEGIN_COM_MAP(CBaseBar)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IDeskBar, IDeskBar)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStreamInit, IPersistStreamInit)
COM_INTERFACE_ENTRY_IID(IID_IPersistPropertyBag, IPersistPropertyBag)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IDeskBar, IDeskBar)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStreamInit, IPersistStreamInit)
COM_INTERFACE_ENTRY_IID(IID_IPersistPropertyBag, IPersistPropertyBag)
END_COM_MAP()
};
CBaseBar::CBaseBar()
{
fClientWindow = NULL;
fVertical = true;
fVisible = false;
fNeededSize = 200;
fTracking = false;
fClientWindow = NULL;
fVertical = true;
fVisible = false;
fNeededSize = 200;
fTracking = false;
}
CBaseBar::~CBaseBar()
@ -173,29 +173,29 @@ CBaseBar::~CBaseBar()
HRESULT CBaseBar::ReserveBorderSpace()
{
CComPtr<IDockingWindowSite> dockingWindowSite;
RECT availableBorderSpace;
RECT neededBorderSpace;
HRESULT hResult;
CComPtr<IDockingWindowSite> dockingWindowSite;
RECT availableBorderSpace;
RECT neededBorderSpace;
HRESULT hResult;
hResult = fSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&dockingWindowSite));
if (FAILED(hResult))
return hResult;
hResult = dockingWindowSite->GetBorderDW(static_cast<IDeskBar *>(this), &availableBorderSpace);
if (FAILED(hResult))
return hResult;
memset(&neededBorderSpace, 0, sizeof(neededBorderSpace));
if (fVisible)
{
if (fVertical)
neededBorderSpace.left = fNeededSize + GetSystemMetrics(SM_CXFRAME);
else
neededBorderSpace.bottom = fNeededSize + GetSystemMetrics(SM_CXFRAME);
}
hResult = dockingWindowSite->SetBorderSpaceDW(static_cast<IDeskBar *>(this), &neededBorderSpace);
if (FAILED(hResult))
return hResult;
return S_OK;
hResult = fSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&dockingWindowSite));
if (FAILED(hResult))
return hResult;
hResult = dockingWindowSite->GetBorderDW(static_cast<IDeskBar *>(this), &availableBorderSpace);
if (FAILED(hResult))
return hResult;
memset(&neededBorderSpace, 0, sizeof(neededBorderSpace));
if (fVisible)
{
if (fVertical)
neededBorderSpace.left = fNeededSize + GetSystemMetrics(SM_CXFRAME);
else
neededBorderSpace.bottom = fNeededSize + GetSystemMetrics(SM_CXFRAME);
}
hResult = dockingWindowSite->SetBorderSpaceDW(static_cast<IDeskBar *>(this), &neededBorderSpace);
if (FAILED(hResult))
return hResult;
return S_OK;
}
// current bar size is stored in the registry under
@ -204,344 +204,344 @@ HRESULT CBaseBar::ReserveBorderSpace()
// result is 8 bytes of binary data, 2 longs. First is the size, second is reserved and will always be 0
/*HRESULT CBaseBar::StopCurrentBar()
{
CComPtr<IOleCommandTarget> commandTarget;
HRESULT hResult;
CComPtr<IOleCommandTarget> commandTarget;
HRESULT hResult;
if (fCurrentBar.p != NULL)
{
hResult = fCurrentBar->QueryInterface(IID_IOleCommandTarget, (void **)&commandTarget);
hResult = commandTarget->Exec(NULL, 0x17, 0, NULL, NULL);
}
// hide the current bar
memcpy(&fCurrentActiveClass, &GUID_NULL, sizeof(fCurrentActiveClass));
return S_OK;
if (fCurrentBar.p != NULL)
{
hResult = fCurrentBar->QueryInterface(IID_IOleCommandTarget, (void **)&commandTarget);
hResult = commandTarget->Exec(NULL, 0x17, 0, NULL, NULL);
}
// hide the current bar
memcpy(&fCurrentActiveClass, &GUID_NULL, sizeof(fCurrentActiveClass));
return S_OK;
}*/
HRESULT STDMETHODCALLTYPE CBaseBar::GetWindow(HWND *lphwnd)
{
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::ContextSensitiveHelp(BOOL fEnterMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::OnFocusChangeIS (IUnknown *punkObj, BOOL fSetFocus)
{
// forward to owner
return E_NOTIMPL;
// forward to owner
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
if (IsEqualIID(*pguidCmdGroup, CGID_Explorer))
{
}
else if (IsEqualIID(*pguidCmdGroup, IID_IDeskBarClient))
{
switch (nCmdID)
{
case 0:
// hide current band
break;
case 2:
break;
case 3:
break;
}
}
return E_NOTIMPL;
if (IsEqualIID(*pguidCmdGroup, CGID_Explorer))
{
}
else if (IsEqualIID(*pguidCmdGroup, IID_IDeskBarClient))
{
switch (nCmdID)
{
case 0:
// hide current band
break;
case 2:
break;
case 3:
break;
}
}
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
CComPtr<IServiceProvider> serviceProvider;
HRESULT hResult;
CComPtr<IServiceProvider> serviceProvider;
HRESULT hResult;
if (fSite == NULL)
return E_FAIL;
hResult = fSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
// called for SID_STopLevelBrowser, IID_IBrowserService to find top level browser
// called for SID_IWebBrowserApp, IID_IConnectionPointContainer
// connection point called for DIID_DWebBrowserEvents2 to establish connection
return serviceProvider->QueryService(guidService, riid, ppvObject);
if (fSite == NULL)
return E_FAIL;
hResult = fSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
// called for SID_STopLevelBrowser, IID_IBrowserService to find top level browser
// called for SID_IWebBrowserApp, IID_IConnectionPointContainer
// connection point called for DIID_DWebBrowserEvents2 to establish connection
return serviceProvider->QueryService(guidService, riid, ppvObject);
}
HRESULT STDMETHODCALLTYPE CBaseBar::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
// forward to contained bar
return S_OK;
// forward to contained bar
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::HasFocusIO()
{
// forward to contained bar
return S_OK;
// forward to contained bar
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::TranslateAcceleratorIO(LPMSG lpMsg)
{
// forward to contained bar
return S_OK;
// forward to contained bar
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::SetClient(IUnknown *punkClient)
{
CComPtr<IOleWindow> oleWindow;
HWND ownerWindow;
HRESULT hResult;
CComPtr<IOleWindow> oleWindow;
HWND ownerWindow;
HRESULT hResult;
if (punkClient == NULL)
fClient.Release();
else
{
hResult = punkClient->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&fClient));
if (FAILED(hResult))
return hResult;
hResult = fSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (FAILED(hResult))
return hResult;
hResult = oleWindow->GetWindow(&ownerWindow);
if (FAILED(hResult))
return hResult;
Create(ownerWindow, 0, NULL,
WS_VISIBLE | WS_CHILDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_TOOLWINDOW);
ReserveBorderSpace();
}
return S_OK;
if (punkClient == NULL)
fClient.Release();
else
{
hResult = punkClient->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&fClient));
if (FAILED(hResult))
return hResult;
hResult = fSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (FAILED(hResult))
return hResult;
hResult = oleWindow->GetWindow(&ownerWindow);
if (FAILED(hResult))
return hResult;
Create(ownerWindow, 0, NULL,
WS_VISIBLE | WS_CHILDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_TOOLWINDOW);
ReserveBorderSpace();
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::GetClient(IUnknown **ppunkClient)
{
if (ppunkClient == NULL)
return E_POINTER;
*ppunkClient = fClient;
if (fClient.p != NULL)
fClient.p->AddRef();
return S_OK;
if (ppunkClient == NULL)
return E_POINTER;
*ppunkClient = fClient;
if (fClient.p != NULL)
fClient.p->AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::OnPosRectChangeDB(LPRECT prc)
{
if (prc == NULL)
return E_POINTER;
if (fVertical)
fNeededSize = prc->right - prc->left;
else
fNeededSize = prc->bottom - prc->top;
ReserveBorderSpace();
return S_OK;
if (prc == NULL)
return E_POINTER;
if (fVertical)
fNeededSize = prc->right - prc->left;
else
fNeededSize = prc->bottom - prc->top;
ReserveBorderSpace();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::ShowDW(BOOL fShow)
{
fVisible = fShow ? true : false;
ReserveBorderSpace();
return S_OK;
fVisible = fShow ? true : false;
ReserveBorderSpace();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::CloseDW(DWORD dwReserved)
{
fVisible = false;
ReserveBorderSpace();
return S_OK;
fVisible = false;
ReserveBorderSpace();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
{
ReserveBorderSpace();
return S_OK;
ReserveBorderSpace();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::SetSite(IUnknown *pUnkSite)
{
fSite = pUnkSite;
return S_OK;
fSite = pUnkSite;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::GetSite(REFIID riid, void **ppvSite)
{
if (ppvSite == NULL)
return E_POINTER;
*ppvSite = fSite;
if (fSite.p != NULL)
fSite.p->AddRef();
return S_OK;
if (ppvSite == NULL)
return E_POINTER;
*ppvSite = fSite;
if (fSite.p != NULL)
fSite.p->AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBar::GetClassID(CLSID *pClassID)
{
if (pClassID == NULL)
return E_POINTER;
// TODO: what class to return here?
return E_NOTIMPL;
if (pClassID == NULL)
return E_POINTER;
// TODO: what class to return here?
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::IsDirty()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::Load(IStream *pStm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::Save(IStream *pStm, BOOL fClearDirty)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
if (pcbSize == NULL)
return E_POINTER;
return E_NOTIMPL;
if (pcbSize == NULL)
return E_POINTER;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::InitNew()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBar::Save(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
LRESULT CBaseBar::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
/* CComPtr<IOleWindow> oleWindow;
RECT clientRect;
HRESULT hResult;
/* CComPtr<IOleWindow> oleWindow;
RECT clientRect;
HRESULT hResult;
if (fClientWindow == NULL && fClient.p != NULL)
{
hResult = fClient->QueryInterface(IID_IOleWindow, (void **)&oleWindow);
hResult = oleWindow->GetWindow(&fClientWindow);
}
if (fClientWindow != NULL)
{
GetClientRect(&clientRect);
::SetWindowPos(fClientWindow, NULL, clientRect.left, clientRect.top, clientRect.right - clientRect.left - GetSystemMetrics(SM_CXFRAME),
clientRect.bottom - clientRect.top, SWP_NOOWNERZORDER | SWP_NOZORDER);
}*/
return 0;
if (fClientWindow == NULL && fClient.p != NULL)
{
hResult = fClient->QueryInterface(IID_IOleWindow, (void **)&oleWindow);
hResult = oleWindow->GetWindow(&fClientWindow);
}
if (fClientWindow != NULL)
{
GetClientRect(&clientRect);
::SetWindowPos(fClientWindow, NULL, clientRect.left, clientRect.top, clientRect.right - clientRect.left - GetSystemMetrics(SM_CXFRAME),
clientRect.bottom - clientRect.top, SWP_NOOWNERZORDER | SWP_NOZORDER);
}*/
return 0;
}
LRESULT CBaseBar::OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
if ((short)lParam != HTCLIENT || (HWND)wParam != m_hWnd)
{
bHandled = FALSE;
return 0;
}
if (fVertical)
SetCursor(LoadCursor(NULL, IDC_SIZEWE));
else
SetCursor(LoadCursor(NULL, IDC_SIZENS));
return 1;
if ((short)lParam != HTCLIENT || (HWND)wParam != m_hWnd)
{
bHandled = FALSE;
return 0;
}
if (fVertical)
SetCursor(LoadCursor(NULL, IDC_SIZEWE));
else
SetCursor(LoadCursor(NULL, IDC_SIZENS));
return 1;
}
LRESULT CBaseBar::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
CComPtr<IWinEventHandler> winEventHandler;
LRESULT result;
HRESULT hResult;
CComPtr<IWinEventHandler> winEventHandler;
LRESULT result;
HRESULT hResult;
result = 0;
if (fClient.p != NULL)
{
hResult = fClient->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (SUCCEEDED(hResult) && winEventHandler.p != NULL)
hResult = winEventHandler->OnWinEvent(NULL, uMsg, wParam, lParam, &result);
}
return result;
result = 0;
if (fClient.p != NULL)
{
hResult = fClient->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (SUCCEEDED(hResult) && winEventHandler.p != NULL)
hResult = winEventHandler->OnWinEvent(NULL, uMsg, wParam, lParam, &result);
}
return result;
}
LRESULT CBaseBar::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
SetCapture();
fTracking = true;
fLastLocation.x = (short)LOWORD(lParam);
fLastLocation.y = (short)HIWORD(lParam);
return 0;
SetCapture();
fTracking = true;
fLastLocation.x = (short)LOWORD(lParam);
fLastLocation.y = (short)HIWORD(lParam);
return 0;
}
LRESULT CBaseBar::OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
ReleaseCapture();
fTracking = false;
return 0;
ReleaseCapture();
fTracking = false;
return 0;
}
LRESULT CBaseBar::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
POINT newLocation;
//int delta;
POINT newLocation;
//int delta;
if (fTracking)
{
newLocation.x = (short)LOWORD(lParam);
newLocation.y = (short)HIWORD(lParam);
if (fTracking)
{
newLocation.x = (short)LOWORD(lParam);
newLocation.y = (short)HIWORD(lParam);
#if 0
if (fVertical)
delta = newLocation.x - fLastLocation.x;
else
delta = newLocation.y - fLastLocation.y;
if (fVertical)
delta = newLocation.x - fLastLocation.x;
else
delta = newLocation.y - fLastLocation.y;
#endif
fLastLocation = newLocation;
}
return 0;
fLastLocation = newLocation;
}
return 0;
}
LRESULT CBaseBar::OnCancelMode(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
fTracking = false;
return 0;
fTracking = false;
return 0;
}
LRESULT CBaseBar::OnCaptureChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
fTracking = false;
return 0;
fTracking = false;
return 0;
}
HRESULT CreateBaseBar(REFIID riid, void **ppv)
{
CComObject<CBaseBar> *theBaseBar;
HRESULT hResult;
CComObject<CBaseBar> *theBaseBar;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theBaseBar = new CComObject<CBaseBar>);
if (theBaseBar == NULL)
return E_OUTOFMEMORY;
hResult = theBaseBar->QueryInterface (riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theBaseBar;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theBaseBar = new CComObject<CBaseBar>);
if (theBaseBar == NULL)
return E_OUTOFMEMORY;
hResult = theBaseBar->QueryInterface (riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theBaseBar;
return hResult;
}
return S_OK;
}

View file

@ -37,57 +37,57 @@ TODO:
*/
class CBaseBarSite :
public CWindowImpl<CBaseBarSite, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
// public IDockingWindowSite,
public IInputObject,
public IServiceProvider,
public IWinEventHandler,
public IInputObjectSite,
public IDeskBarClient,
public IOleCommandTarget,
public IBandSite,
// public IBandSiteHelper,
// public IExplorerToolbar,
public IPersistStream
public CWindowImpl<CBaseBarSite, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
// public IDockingWindowSite,
public IInputObject,
public IServiceProvider,
public IWinEventHandler,
public IInputObjectSite,
public IDeskBarClient,
public IOleCommandTarget,
public IBandSite,
// public IBandSiteHelper,
// public IExplorerToolbar,
public IPersistStream
{
private:
class CBarInfo
{
public:
CComPtr<IUnknown> fTheBar;
CLSID fBarClass; // class of active bar
DWORD fBandID;
};
CBarInfo *fCurrentActiveBar; //
// HWND fRebarWindow; // rebar for top of window
CComPtr<IUnknown> fDeskBarSite;
DWORD fNextBandID;
class CBarInfo
{
public:
CComPtr<IUnknown> fTheBar;
CLSID fBarClass; // class of active bar
DWORD fBandID;
};
CBarInfo *fCurrentActiveBar; //
// HWND fRebarWindow; // rebar for top of window
CComPtr<IUnknown> fDeskBarSite;
DWORD fNextBandID;
public:
CBaseBarSite();
~CBaseBarSite();
CBaseBarSite();
~CBaseBarSite();
private:
HRESULT InsertBar(IUnknown *newBar);
HRESULT InsertBar(IUnknown *newBar);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IInputObject methods ***
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IInputObjectSite specific methods ***
// *** IInputObjectSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
// *** IDeskBarClient methods ***
@ -96,60 +96,60 @@ private:
virtual HRESULT STDMETHODCALLTYPE UIActivateDBC(DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE GetSize(DWORD dwWhich, LPRECT prc);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IBandSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState,
LPWSTR pszName, int cchName);
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
// *** IBandSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState,
LPWSTR pszName, int cchName);
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// message handlers
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// message handlers
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
BEGIN_MSG_MAP(CBaseBarSite)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
END_MSG_MAP()
BEGIN_COM_MAP(CBaseBarSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
// COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite, IDockingWindowSite)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IDeskBarClient, IDeskBarClient)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
// COM_INTERFACE_ENTRY_IID(IID_IBandSiteHelper, IBandSiteHelper)
// COM_INTERFACE_ENTRY_IID(IID_IExplorerToolbar, IExplorerToolbar)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
// COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite, IDockingWindowSite)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IDeskBarClient, IDeskBarClient)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
// COM_INTERFACE_ENTRY_IID(IID_IBandSiteHelper, IBandSiteHelper)
// COM_INTERFACE_ENTRY_IID(IID_IExplorerToolbar, IExplorerToolbar)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
};
CBaseBarSite::CBaseBarSite()
{
fCurrentActiveBar = NULL;
fNextBandID = 1;
fCurrentActiveBar = NULL;
fNextBandID = 1;
}
CBaseBarSite::~CBaseBarSite()
@ -158,338 +158,338 @@ CBaseBarSite::~CBaseBarSite()
HRESULT CBaseBarSite::InsertBar(IUnknown *newBar)
{
CComPtr<IPersist> persist;
CComPtr<IObjectWithSite> site;
CComPtr<IOleWindow> oleWindow;
CComPtr<IDeskBand> deskBand;
CComPtr<IDockingWindow> dockingWindow;
CBarInfo *newInfo;
REBARBANDINFOW bandInfo;
DESKBANDINFO deskBandInfo;
DWORD thisBandID;
HRESULT hResult;
CComPtr<IPersist> persist;
CComPtr<IObjectWithSite> site;
CComPtr<IOleWindow> oleWindow;
CComPtr<IDeskBand> deskBand;
CComPtr<IDockingWindow> dockingWindow;
CBarInfo *newInfo;
REBARBANDINFOW bandInfo;
DESKBANDINFO deskBandInfo;
DWORD thisBandID;
HRESULT hResult;
hResult = newBar->QueryInterface(IID_IPersist, reinterpret_cast<void **>(&persist));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IObjectWithSite, reinterpret_cast<void **>(&site));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IDeskBand, reinterpret_cast<void **>(&deskBand));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IDockingWindow, reinterpret_cast<void **>(&dockingWindow));
if (FAILED(hResult))
return hResult;
hResult = site->SetSite(static_cast<IOleWindow *>(this));
if (FAILED(hResult))
return hResult;
ATLTRY(newInfo = new CBarInfo);
if (newInfo == NULL)
return E_OUTOFMEMORY;
hResult = newBar->QueryInterface(IID_IPersist, reinterpret_cast<void **>(&persist));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IObjectWithSite, reinterpret_cast<void **>(&site));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IDeskBand, reinterpret_cast<void **>(&deskBand));
if (FAILED(hResult))
return hResult;
hResult = newBar->QueryInterface(IID_IDockingWindow, reinterpret_cast<void **>(&dockingWindow));
if (FAILED(hResult))
return hResult;
hResult = site->SetSite(static_cast<IOleWindow *>(this));
if (FAILED(hResult))
return hResult;
ATLTRY(newInfo = new CBarInfo);
if (newInfo == NULL)
return E_OUTOFMEMORY;
// set new bar info
thisBandID = fNextBandID++;
newInfo->fTheBar = newBar;
newInfo->fBandID = thisBandID;
hResult = persist->GetClassID(&newInfo->fBarClass);
// set new bar info
thisBandID = fNextBandID++;
newInfo->fTheBar = newBar;
newInfo->fBandID = thisBandID;
hResult = persist->GetClassID(&newInfo->fBarClass);
// get band info
deskBandInfo.dwMask = DBIM_MINSIZE | DBIM_ACTUAL | DBIM_TITLE;
deskBandInfo.wszTitle[0] = 0;
hResult = deskBand->GetBandInfo(0, 0, &deskBandInfo);
// get band info
deskBandInfo.dwMask = DBIM_MINSIZE | DBIM_ACTUAL | DBIM_TITLE;
deskBandInfo.wszTitle[0] = 0;
hResult = deskBand->GetBandInfo(0, 0, &deskBandInfo);
// insert band
memset(&bandInfo, 0, sizeof(bandInfo));
bandInfo.cbSize = sizeof(bandInfo);
bandInfo.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_TEXT |
RBBIM_LPARAM | RBBIM_ID;
bandInfo.fStyle = RBBS_NOGRIPPER | RBBS_VARIABLEHEIGHT;
bandInfo.lpText = deskBandInfo.wszTitle;
hResult = oleWindow->GetWindow(&bandInfo.hwndChild);
bandInfo.cxMinChild = 200; //deskBandInfo.ptMinSize.x;
bandInfo.cyMinChild = 200; //deskBandInfo.ptMinSize.y;
bandInfo.cx = 0;
bandInfo.wID = thisBandID;
bandInfo.cyChild = -1; //deskBandInfo.ptActual.y;
bandInfo.cyMaxChild = 32000;
bandInfo.cyIntegral = 1;
bandInfo.cxIdeal = 0; //deskBandInfo.ptActual.x;
bandInfo.lParam = reinterpret_cast<LPARAM>(newInfo);
SendMessage(RB_INSERTBANDW, -1, reinterpret_cast<LPARAM>(&bandInfo));
// insert band
memset(&bandInfo, 0, sizeof(bandInfo));
bandInfo.cbSize = sizeof(bandInfo);
bandInfo.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_TEXT |
RBBIM_LPARAM | RBBIM_ID;
bandInfo.fStyle = RBBS_NOGRIPPER | RBBS_VARIABLEHEIGHT;
bandInfo.lpText = deskBandInfo.wszTitle;
hResult = oleWindow->GetWindow(&bandInfo.hwndChild);
bandInfo.cxMinChild = 200; //deskBandInfo.ptMinSize.x;
bandInfo.cyMinChild = 200; //deskBandInfo.ptMinSize.y;
bandInfo.cx = 0;
bandInfo.wID = thisBandID;
bandInfo.cyChild = -1; //deskBandInfo.ptActual.y;
bandInfo.cyMaxChild = 32000;
bandInfo.cyIntegral = 1;
bandInfo.cxIdeal = 0; //deskBandInfo.ptActual.x;
bandInfo.lParam = reinterpret_cast<LPARAM>(newInfo);
SendMessage(RB_INSERTBANDW, -1, reinterpret_cast<LPARAM>(&bandInfo));
// this call is what makes the tree fill with contents
hResult = dockingWindow->ShowDW(TRUE);
if (FAILED(hResult))
return hResult;
// for now
fCurrentActiveBar = newInfo;
return S_OK;
// this call is what makes the tree fill with contents
hResult = dockingWindow->ShowDW(TRUE);
if (FAILED(hResult))
return hResult;
// for now
fCurrentActiveBar = newInfo;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::GetWindow(HWND *lphwnd)
{
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::ContextSensitiveHelp(BOOL fEnterMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::HasFocusIO()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::TranslateAcceleratorIO(LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
CComPtr<IServiceProvider> serviceProvider;
HRESULT hResult;
CComPtr<IServiceProvider> serviceProvider;
HRESULT hResult;
if (fDeskBarSite == NULL)
return E_FAIL;
hResult = fDeskBarSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
// called for SID_STopLevelBrowser, IID_IBrowserService to find top level browser
// called for SID_IWebBrowserApp, IID_IConnectionPointContainer
// connection point called for DIID_DWebBrowserEvents2 to establish connection
return serviceProvider->QueryService(guidService, riid, ppvObject);
if (fDeskBarSite == NULL)
return E_FAIL;
hResult = fDeskBarSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
// called for SID_STopLevelBrowser, IID_IBrowserService to find top level browser
// called for SID_IWebBrowserApp, IID_IConnectionPointContainer
// connection point called for DIID_DWebBrowserEvents2 to establish connection
return serviceProvider->QueryService(guidService, riid, ppvObject);
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::OnWinEvent(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{
CComPtr<IDeskBar> deskBar;
CComPtr<IWinEventHandler> winEventHandler;
NMHDR *notifyHeader;
RECT newBounds;
HRESULT hResult;
CComPtr<IDeskBar> deskBar;
CComPtr<IWinEventHandler> winEventHandler;
NMHDR *notifyHeader;
RECT newBounds;
HRESULT hResult;
hResult = S_OK;
if (uMsg == WM_NOTIFY)
{
notifyHeader = (NMHDR *)lParam;
if (notifyHeader->hwndFrom == m_hWnd && notifyHeader->code == RBN_AUTOSIZE)
{
hResult = fDeskBarSite->QueryInterface(IID_IDeskBar, reinterpret_cast<void **>(&deskBar));
GetClientRect(&newBounds);
hResult = deskBar->OnPosRectChangeDB(&newBounds);
}
}
if (fCurrentActiveBar != NULL)
{
hResult = fCurrentActiveBar->fTheBar->QueryInterface(
IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (SUCCEEDED(hResult) && winEventHandler.p != NULL)
hResult = winEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
}
return hResult;
hResult = S_OK;
if (uMsg == WM_NOTIFY)
{
notifyHeader = (NMHDR *)lParam;
if (notifyHeader->hwndFrom == m_hWnd && notifyHeader->code == RBN_AUTOSIZE)
{
hResult = fDeskBarSite->QueryInterface(IID_IDeskBar, reinterpret_cast<void **>(&deskBar));
GetClientRect(&newBounds);
hResult = deskBar->OnPosRectChangeDB(&newBounds);
}
}
if (fCurrentActiveBar != NULL)
{
hResult = fCurrentActiveBar->fTheBar->QueryInterface(
IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
if (SUCCEEDED(hResult) && winEventHandler.p != NULL)
hResult = winEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
}
return hResult;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::IsWindowOwner(HWND hWnd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::OnFocusChangeIS (IUnknown *punkObj, BOOL fSetFocus)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::SetDeskBarSite(IUnknown *punkSite)
{
CComPtr<IOleWindow> oleWindow;
HWND ownerWindow;
HRESULT hResult;
CComPtr<IOleWindow> oleWindow;
HWND ownerWindow;
HRESULT hResult;
if (punkSite == NULL)
fDeskBarSite.Release();
else
{
hResult = punkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (FAILED(hResult))
return hResult;
hResult = punkSite->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&fDeskBarSite));
if (FAILED(hResult))
return hResult;
hResult = oleWindow->GetWindow(&ownerWindow);
if (FAILED(hResult))
return hResult;
m_hWnd = CreateWindow(REBARCLASSNAMEW, NULL, WS_VISIBLE | WS_CHILDWINDOW | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN |
RBS_VARHEIGHT | RBS_REGISTERDROP | RBS_AUTOSIZE | RBS_VERTICALGRIPPER | RBS_DBLCLKTOGGLE |
CCS_LEFT | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NORESIZE, 0, 0, 0, 0, ownerWindow, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
SendMessage(RB_SETTEXTCOLOR, 0, CLR_DEFAULT);
SendMessage(RB_SETBKCOLOR, 0, CLR_DEFAULT);
}
return S_OK;
if (punkSite == NULL)
fDeskBarSite.Release();
else
{
hResult = punkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (FAILED(hResult))
return hResult;
hResult = punkSite->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&fDeskBarSite));
if (FAILED(hResult))
return hResult;
hResult = oleWindow->GetWindow(&ownerWindow);
if (FAILED(hResult))
return hResult;
m_hWnd = CreateWindow(REBARCLASSNAMEW, NULL, WS_VISIBLE | WS_CHILDWINDOW | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN |
RBS_VARHEIGHT | RBS_REGISTERDROP | RBS_AUTOSIZE | RBS_VERTICALGRIPPER | RBS_DBLCLKTOGGLE |
CCS_LEFT | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NORESIZE, 0, 0, 0, 0, ownerWindow, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
SendMessage(RB_SETTEXTCOLOR, 0, CLR_DEFAULT);
SendMessage(RB_SETBKCOLOR, 0, CLR_DEFAULT);
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::SetModeDBC(DWORD dwMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::UIActivateDBC(DWORD dwState)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::GetSize(DWORD dwWhich, LPRECT prc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::QueryStatus(const GUID *pguidCmdGroup,
ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
if (IsEqualIID(*pguidCmdGroup, IID_IDeskBand))
{
switch (nCmdID)
{
case 1: // insert a new band
if (V_VT(pvaIn) != VT_UNKNOWN)
return E_INVALIDARG;
return InsertBar(V_UNKNOWN(pvaIn));
}
}
return E_FAIL;
if (IsEqualIID(*pguidCmdGroup, IID_IDeskBand))
{
switch (nCmdID)
{
case 1: // insert a new band
if (V_VT(pvaIn) != VT_UNKNOWN)
return E_INVALIDARG;
return InsertBar(V_UNKNOWN(pvaIn));
}
}
return E_FAIL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::AddBand(IUnknown *punk)
{
return InsertBar(punk);
return InsertBar(punk);
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::EnumBands(UINT uBand, DWORD *pdwBandID)
{
if (uBand == 0xffffffff)
{
*pdwBandID = (DWORD)SendMessage(RB_GETBANDCOUNT, 0, 0);
return S_OK;
}
return E_NOTIMPL;
if (uBand == 0xffffffff)
{
*pdwBandID = (DWORD)SendMessage(RB_GETBANDCOUNT, 0, 0);
return S_OK;
}
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::QueryBand(DWORD dwBandID, IDeskBand **ppstb,
DWORD *pdwState, LPWSTR pszName, int cchName)
DWORD *pdwState, LPWSTR pszName, int cchName)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::RemoveBand(DWORD dwBandID)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::GetBandObject(DWORD dwBandID, REFIID riid, void **ppv)
{
if (ppv == NULL)
return E_POINTER;
return E_NOTIMPL;
if (ppv == NULL)
return E_POINTER;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::SetBandSiteInfo(const BANDSITEINFO *pbsinfo)
{
if (pbsinfo == NULL)
return E_POINTER;
return E_NOTIMPL;
if (pbsinfo == NULL)
return E_POINTER;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::GetBandSiteInfo(BANDSITEINFO *pbsinfo)
{
if (pbsinfo == NULL)
return E_POINTER;
return E_NOTIMPL;
if (pbsinfo == NULL)
return E_POINTER;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::GetClassID(CLSID *pClassID)
{
if (pClassID == NULL)
return E_POINTER;
// TODO: what class to return here?
return E_NOTIMPL;
if (pClassID == NULL)
return E_POINTER;
// TODO: what class to return here?
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::IsDirty()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::Load(IStream *pStm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::Save(IStream *pStm, BOOL fClearDirty)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
if (pcbSize == NULL)
return E_POINTER;
return E_NOTIMPL;
if (pcbSize == NULL)
return E_POINTER;
return E_NOTIMPL;
}
LRESULT CBaseBarSite::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
NMHDR *notifyHeader;
NMHDR *notifyHeader;
notifyHeader = reinterpret_cast<NMHDR *>(lParam);
if (notifyHeader->hwndFrom == m_hWnd)
{
}
return 0;
notifyHeader = reinterpret_cast<NMHDR *>(lParam);
if (notifyHeader->hwndFrom == m_hWnd)
{
}
return 0;
}
HRESULT CreateBaseBarSite(REFIID riid, void **ppv)
{
CComObject<CBaseBarSite> *theBaseBarSite;
HRESULT hResult;
CComObject<CBaseBarSite> *theBaseBarSite;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theBaseBarSite = new CComObject<CBaseBarSite>);
if (theBaseBarSite == NULL)
return E_OUTOFMEMORY;
hResult = theBaseBarSite->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theBaseBarSite;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theBaseBarSite = new CComObject<CBaseBarSite>);
if (theBaseBarSite == NULL)
return E_OUTOFMEMORY;
hResult = theBaseBarSite->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theBaseBarSite;
return hResult;
}
return S_OK;
}

View file

@ -26,210 +26,210 @@ animation.
/*
TODO:
Add Exec command handlers
Properly implement GetBandInfo
Fix SetSite to revoke brand band service when site is cleared
Add Exec command handlers
Properly implement GetBandInfo
Fix SetSite to revoke brand band service when site is cleared
*/
inline void FillSolidRect(HDC dc, const RECT *bounds)
{
::ExtTextOut(dc, 0, 0, ETO_OPAQUE, bounds, NULL, 0, NULL);
::ExtTextOut(dc, 0, 0, ETO_OPAQUE, bounds, NULL, 0, NULL);
}
inline void FillSolidRect(HDC dc, const RECT *bounds, COLORREF clr)
{
::SetBkColor(dc, clr);
::ExtTextOut(dc, 0, 0, ETO_OPAQUE, bounds, NULL, 0, NULL);
::SetBkColor(dc, clr);
::ExtTextOut(dc, 0, 0, ETO_OPAQUE, bounds, NULL, 0, NULL);
}
long GetScreenDepth()
{
HDC tempDC;
long depth;
HDC tempDC;
long depth;
tempDC = GetDC(NULL);
depth = GetDeviceCaps(tempDC, BITSPIXEL) * GetDeviceCaps(tempDC, PLANES);
ReleaseDC(NULL, tempDC);
return depth;
tempDC = GetDC(NULL);
depth = GetDeviceCaps(tempDC, BITSPIXEL) * GetDeviceCaps(tempDC, PLANES);
ReleaseDC(NULL, tempDC);
return depth;
}
static const int gSmallImageSize = 22;
static const int gMediumImageSize = 26;
static const int gLargeImageSize = 38;
static const int gSmallImageSize = 22;
static const int gMediumImageSize = 26;
static const int gLargeImageSize = 38;
static const int gTrueColorResourceBase = 240;
static const int g256ColorResourceBase = 245;
static const int gTrueColorResourceBase = 240;
static const int g256ColorResourceBase = 245;
CBrandBand::CBrandBand()
{
fProfferCookie = 0;
fCurrentFrame = 0;
fMaxFrameCount = 0;
fImageBitmap = NULL;
fBitmapSize = 0;
fAdviseCookie = 0;
fProfferCookie = 0;
fCurrentFrame = 0;
fMaxFrameCount = 0;
fImageBitmap = NULL;
fBitmapSize = 0;
fAdviseCookie = 0;
}
CBrandBand::~CBrandBand()
{
DeleteObject(fImageBitmap);
DeleteObject(fImageBitmap);
}
void CBrandBand::StartAnimation()
{
fCurrentFrame = 0;
SetTimer(5678, 30, NULL);
fCurrentFrame = 0;
SetTimer(5678, 30, NULL);
}
void CBrandBand::StopAnimation()
{
KillTimer(5678);
fCurrentFrame = 0;
Invalidate(FALSE);
KillTimer(5678);
fCurrentFrame = 0;
Invalidate(FALSE);
}
void CBrandBand::SelectImage()
{
int screenDepth;
RECT clientRect;
int clientWidth;
int clientHeight;
int clientSize;
HINSTANCE shell32Instance;
BITMAP bitmapInfo;
int resourceID;
int screenDepth;
RECT clientRect;
int clientWidth;
int clientHeight;
int clientSize;
HINSTANCE shell32Instance;
BITMAP bitmapInfo;
int resourceID;
screenDepth = GetScreenDepth();
GetClientRect(&clientRect);
clientWidth = clientRect.right - clientRect.left;
clientHeight = clientRect.bottom - clientRect.top;
clientSize = min(clientWidth, clientHeight);
if (screenDepth > 8)
resourceID = gTrueColorResourceBase;
else
resourceID = g256ColorResourceBase;
if (clientSize >= gLargeImageSize)
resourceID += 2;
else if (clientSize >= gMediumImageSize)
resourceID += 1;
shell32Instance = GetModuleHandle(L"shell32.dll");
fImageBitmap = LoadBitmap(shell32Instance, MAKEINTRESOURCE(resourceID));
GetObjectW(fImageBitmap, sizeof(bitmapInfo), &bitmapInfo);
fBitmapSize = bitmapInfo.bmWidth;
fMaxFrameCount = bitmapInfo.bmHeight / fBitmapSize;
screenDepth = GetScreenDepth();
GetClientRect(&clientRect);
clientWidth = clientRect.right - clientRect.left;
clientHeight = clientRect.bottom - clientRect.top;
clientSize = min(clientWidth, clientHeight);
if (screenDepth > 8)
resourceID = gTrueColorResourceBase;
else
resourceID = g256ColorResourceBase;
if (clientSize >= gLargeImageSize)
resourceID += 2;
else if (clientSize >= gMediumImageSize)
resourceID += 1;
shell32Instance = GetModuleHandle(L"shell32.dll");
fImageBitmap = LoadBitmap(shell32Instance, MAKEINTRESOURCE(resourceID));
GetObjectW(fImageBitmap, sizeof(bitmapInfo), &bitmapInfo);
fBitmapSize = bitmapInfo.bmWidth;
fMaxFrameCount = bitmapInfo.bmHeight / fBitmapSize;
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi)
{
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 38;
pdbi->ptMinSize.y = 22;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = 38;
pdbi->ptMaxSize.y = 38;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 38;
pdbi->ptIntegral.y = 38;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 38;
pdbi->ptActual.y = 38;
}
if (pdbi->dwMask & DBIM_TITLE)
wcscpy(pdbi->wszTitle, L"");
if (pdbi->dwMask & DBIM_MODEFLAGS)
pdbi->dwModeFlags = DBIMF_UNDELETEABLE;
if (pdbi->dwMask & DBIM_BKCOLOR)
pdbi->crBkgnd = 0;
return S_OK;
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 38;
pdbi->ptMinSize.y = 22;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = 38;
pdbi->ptMaxSize.y = 38;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 38;
pdbi->ptIntegral.y = 38;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 38;
pdbi->ptActual.y = 38;
}
if (pdbi->dwMask & DBIM_TITLE)
wcscpy(pdbi->wszTitle, L"");
if (pdbi->dwMask & DBIM_MODEFLAGS)
pdbi->dwModeFlags = DBIMF_UNDELETEABLE;
if (pdbi->dwMask & DBIM_BKCOLOR)
pdbi->crBkgnd = 0;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBrandBand::SetSite(IUnknown* pUnkSite)
{
CComPtr<IBrowserService> browserService;
CComPtr<IOleWindow> oleWindow;
CComPtr<IServiceProvider> serviceProvider;
CComPtr<IProfferService> profferService;
HWND parentWindow;
HWND hwnd;
HRESULT hResult;
CComPtr<IBrowserService> browserService;
CComPtr<IOleWindow> oleWindow;
CComPtr<IServiceProvider> serviceProvider;
CComPtr<IProfferService> profferService;
HWND parentWindow;
HWND hwnd;
HRESULT hResult;
fSite.Release();
if (pUnkSite == NULL)
{
hResult = AtlUnadvise(fSite, DIID_DWebBrowserEvents, fAdviseCookie);
// TODO: revoke brand band service
return S_OK;
}
fSite.Release();
if (pUnkSite == NULL)
{
hResult = AtlUnadvise(fSite, DIID_DWebBrowserEvents, fAdviseCookie);
// TODO: revoke brand band service
return S_OK;
}
// get window handle of parent
hResult = pUnkSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&fSite));
if (FAILED(hResult))
return hResult;
parentWindow = NULL;
hResult = pUnkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
hResult = oleWindow->GetWindow(&parentWindow);
if (!::IsWindow(parentWindow))
return E_FAIL;
// get window handle of parent
hResult = pUnkSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&fSite));
if (FAILED(hResult))
return hResult;
parentWindow = NULL;
hResult = pUnkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
hResult = oleWindow->GetWindow(&parentWindow);
if (!::IsWindow(parentWindow))
return E_FAIL;
// create worker window in parent window
hwnd = SHCreateWorkerWindowW(0, parentWindow, 0,
WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, NULL, 0);
if (hwnd == NULL)
return E_FAIL;
SubclassWindow(hwnd);
// create worker window in parent window
hwnd = SHCreateWorkerWindowW(0, parentWindow, 0,
WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, NULL, 0);
if (hwnd == NULL)
return E_FAIL;
SubclassWindow(hwnd);
// take advice to watch events
hResult = pUnkSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (SUCCEEDED(hResult))
{
hResult = serviceProvider->QueryService(
SID_SBrandBand, IID_IProfferService, reinterpret_cast<void **>(&profferService));
if (SUCCEEDED(hResult))
hResult = profferService->ProfferService(SID_SBrandBand,
static_cast<IServiceProvider *>(this), &fProfferCookie);
hResult = serviceProvider->QueryService(SID_SShellBrowser,
IID_IBrowserService, reinterpret_cast<void **>(&browserService));
if (SUCCEEDED(hResult))
hResult = AtlAdvise(browserService, static_cast<IDispatch *>(this), DIID_DWebBrowserEvents, &fAdviseCookie);
}
// take advice to watch events
hResult = pUnkSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (SUCCEEDED(hResult))
{
hResult = serviceProvider->QueryService(
SID_SBrandBand, IID_IProfferService, reinterpret_cast<void **>(&profferService));
if (SUCCEEDED(hResult))
hResult = profferService->ProfferService(SID_SBrandBand,
static_cast<IServiceProvider *>(this), &fProfferCookie);
hResult = serviceProvider->QueryService(SID_SShellBrowser,
IID_IBrowserService, reinterpret_cast<void **>(&browserService));
if (SUCCEEDED(hResult))
hResult = AtlAdvise(browserService, static_cast<IDispatch *>(this), DIID_DWebBrowserEvents, &fAdviseCookie);
}
// ignore any hResult errors up to here - they are nonfatal
hResult = S_OK;
SelectImage();
return hResult;
// ignore any hResult errors up to here - they are nonfatal
hResult = S_OK;
SelectImage();
return hResult;
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetSite(REFIID riid, void **ppvSite)
{
if (ppvSite == NULL)
return E_POINTER;
if (fSite.p == NULL)
{
*ppvSite = NULL;
return E_FAIL;
}
return fSite.p->QueryInterface(riid, ppvSite);
if (ppvSite == NULL)
return E_POINTER;
if (fSite.p == NULL)
{
*ppvSite = NULL;
return E_FAIL;
}
return fSite.p->QueryInterface(riid, ppvSite);
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetWindow(HWND *lphwnd)
{
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBrandBand::ContextSensitiveHelp(BOOL fEnterMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::CloseDW(DWORD dwReserved)
@ -245,9 +245,9 @@ HRESULT STDMETHODCALLTYPE CBrandBand::CloseDW(DWORD dwReserved)
}
HRESULT STDMETHODCALLTYPE CBrandBand::ResizeBorderDW(
const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved)
const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::ShowDW(BOOL fShow)
@ -264,225 +264,225 @@ HRESULT STDMETHODCALLTYPE CBrandBand::ShowDW(BOOL fShow)
HRESULT STDMETHODCALLTYPE CBrandBand::HasFocusIO()
{
if (GetFocus() == m_hWnd)
return S_OK;
return S_FALSE;
if (GetFocus() == m_hWnd)
return S_OK;
return S_FALSE;
}
HRESULT STDMETHODCALLTYPE CBrandBand::TranslateAcceleratorIO(LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetClassID(CLSID *pClassID)
{
if (pClassID == NULL)
return E_POINTER;
*pClassID = CLSID_BrandBand;
return S_OK;
if (pClassID == NULL)
return E_POINTER;
*pClassID = CLSID_BrandBand;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CBrandBand::IsDirty()
{
return S_FALSE;
return S_FALSE;
}
HRESULT STDMETHODCALLTYPE CBrandBand::Load(IStream *pStm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::Save(IStream *pStm, BOOL fClearDirty)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::OnWinEvent(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::IsWindowOwner(HWND hWnd)
{
if (hWnd == m_hWnd)
return S_OK;
return S_FALSE;
if (hWnd == m_hWnd)
return S_OK;
return S_FALSE;
}
HRESULT STDMETHODCALLTYPE CBrandBand::QueryStatus(
const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::Exec(const GUID *pguidCmdGroup,
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
if (IsEqualIID(*pguidCmdGroup, CGID_PrivCITCommands))
{
}
else if (IsEqualIID(*pguidCmdGroup, CGID_BrandCmdGroup))
{
switch (nCmdID)
{
case BBID_STARTANIMATION:
StartAnimation();
return S_OK;
case BBID_STOPANIMATION:
StopAnimation();
return S_OK;
}
}
return E_FAIL;
if (IsEqualIID(*pguidCmdGroup, CGID_PrivCITCommands))
{
}
else if (IsEqualIID(*pguidCmdGroup, CGID_BrandCmdGroup))
{
switch (nCmdID)
{
case BBID_STARTANIMATION:
StartAnimation();
return S_OK;
case BBID_STOPANIMATION:
StopAnimation();
return S_OK;
}
}
return E_FAIL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
CComPtr<IServiceProvider> serviceProvider;
HRESULT hResult;
CComPtr<IServiceProvider> serviceProvider;
HRESULT hResult;
if (IsEqualIID(guidService, SID_SBrandBand))
return this->QueryInterface(riid, ppvObject);
hResult = fSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
return serviceProvider->QueryService(guidService, riid, ppvObject);
if (IsEqualIID(guidService, SID_SBrandBand))
return this->QueryInterface(riid, ppvObject);
hResult = fSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&serviceProvider));
if (FAILED(hResult))
return hResult;
return serviceProvider->QueryService(guidService, riid, ppvObject);
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetTypeInfoCount(UINT *pctinfo)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames,
LCID lcid, DISPID *rgDispId)
LCID lcid, DISPID *rgDispId)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CBrandBand::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
if (pDispParams == NULL)
return E_INVALIDARG;
switch (dispIdMember)
{
case DISPID_DOWNLOADCOMPLETE:
StopAnimation();
break;
case DISPID_DOWNLOADBEGIN:
StartAnimation();
break;
}
return E_INVALIDARG;
if (pDispParams == NULL)
return E_INVALIDARG;
switch (dispIdMember)
{
case DISPID_DOWNLOADCOMPLETE:
StopAnimation();
break;
case DISPID_DOWNLOADBEGIN:
StartAnimation();
break;
}
return E_INVALIDARG;
}
LRESULT CBrandBand::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
Invalidate(FALSE);
return 0;
Invalidate(FALSE);
return 0;
}
LRESULT CBrandBand::OnEraseBkgnd (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
return 1;
return 1;
}
LRESULT CBrandBand::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
PAINTSTRUCT paintInfo;
HDC dc;
POINT destinationPoint;
HDC sourceDC;
HBITMAP oldBitmap;
RECT clientRect;
RECT tempRect;
PAINTSTRUCT paintInfo;
HDC dc;
POINT destinationPoint;
HDC sourceDC;
HBITMAP oldBitmap;
RECT clientRect;
RECT tempRect;
dc = BeginPaint(&paintInfo);
GetClientRect(&clientRect);
dc = BeginPaint(&paintInfo);
GetClientRect(&clientRect);
destinationPoint.x = (clientRect.right - clientRect.left - fBitmapSize) / 2;
destinationPoint.y = (clientRect.bottom - clientRect.top - fBitmapSize) / 2;
destinationPoint.x = (clientRect.right - clientRect.left - fBitmapSize) / 2;
destinationPoint.y = (clientRect.bottom - clientRect.top - fBitmapSize) / 2;
::SetBkColor(dc, RGB(255, 255, 255));
::SetBkColor(dc, RGB(255, 255, 255));
tempRect.left = 0;
tempRect.top = 0;
tempRect.right = clientRect.right;
tempRect.bottom = destinationPoint.y;
FillSolidRect(dc, &tempRect, RGB(255, 255, 255));
tempRect.left = 0;
tempRect.top = 0;
tempRect.right = clientRect.right;
tempRect.bottom = destinationPoint.y;
FillSolidRect(dc, &tempRect, RGB(255, 255, 255));
tempRect.left = 0;
tempRect.top = destinationPoint.y + fBitmapSize;
tempRect.right = clientRect.right;
tempRect.bottom = clientRect.bottom;
FillSolidRect(dc, &paintInfo.rcPaint, RGB(255, 255, 255));
tempRect.left = 0;
tempRect.top = destinationPoint.y + fBitmapSize;
tempRect.right = clientRect.right;
tempRect.bottom = clientRect.bottom;
FillSolidRect(dc, &paintInfo.rcPaint, RGB(255, 255, 255));
tempRect.left = 0;
tempRect.top = destinationPoint.y;
tempRect.right = destinationPoint.x;
tempRect.bottom = destinationPoint.y + fBitmapSize;
FillSolidRect(dc, &paintInfo.rcPaint, RGB(255, 255, 255));
tempRect.left = 0;
tempRect.top = destinationPoint.y;
tempRect.right = destinationPoint.x;
tempRect.bottom = destinationPoint.y + fBitmapSize;
FillSolidRect(dc, &paintInfo.rcPaint, RGB(255, 255, 255));
tempRect.left = destinationPoint.x + fBitmapSize;
tempRect.top = destinationPoint.y;
tempRect.right = clientRect.right;
tempRect.bottom = destinationPoint.y + fBitmapSize;
FillSolidRect(dc, &paintInfo.rcPaint, RGB(255, 255, 255));
tempRect.left = destinationPoint.x + fBitmapSize;
tempRect.top = destinationPoint.y;
tempRect.right = clientRect.right;
tempRect.bottom = destinationPoint.y + fBitmapSize;
FillSolidRect(dc, &paintInfo.rcPaint, RGB(255, 255, 255));
sourceDC = CreateCompatibleDC(dc);
oldBitmap = reinterpret_cast<HBITMAP>(SelectObject(sourceDC, fImageBitmap));
sourceDC = CreateCompatibleDC(dc);
oldBitmap = reinterpret_cast<HBITMAP>(SelectObject(sourceDC, fImageBitmap));
BitBlt(dc, destinationPoint.x, destinationPoint.y, fBitmapSize, fBitmapSize, sourceDC, 0, fCurrentFrame * fBitmapSize, SRCCOPY);
BitBlt(dc, destinationPoint.x, destinationPoint.y, fBitmapSize, fBitmapSize, sourceDC, 0, fCurrentFrame * fBitmapSize, SRCCOPY);
SelectObject(sourceDC, oldBitmap);
DeleteDC(sourceDC);
SelectObject(sourceDC, oldBitmap);
DeleteDC(sourceDC);
EndPaint(&paintInfo);
return 0;
EndPaint(&paintInfo);
return 0;
}
LRESULT CBrandBand::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
fCurrentFrame++;
if (fCurrentFrame >= fMaxFrameCount)
fCurrentFrame = 0;
Invalidate(FALSE);
return 0;
fCurrentFrame++;
if (fCurrentFrame >= fMaxFrameCount)
fCurrentFrame = 0;
Invalidate(FALSE);
return 0;
}
HRESULT CreateBrandBand(REFIID riid, void **ppv)
{
CComObject<CBrandBand> *theMenuBar;
HRESULT hResult;
CComObject<CBrandBand> *theMenuBar;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CBrandBand>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CBrandBand>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
}

View file

@ -21,109 +21,109 @@
#pragma once
class CBrandBand :
public CWindowImpl<CBrandBand, CWindow, CControlWinTraits>,
public CComCoClass<CBrandBand, &CLSID_BrandBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IObjectWithSite,
public IInputObject,
public IPersistStream,
public IWinEventHandler,
public IOleCommandTarget,
public IServiceProvider,
public IDispatch
public CWindowImpl<CBrandBand, CWindow, CControlWinTraits>,
public CComCoClass<CBrandBand, &CLSID_BrandBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IObjectWithSite,
public IInputObject,
public IPersistStream,
public IWinEventHandler,
public IOleCommandTarget,
public IServiceProvider,
public IDispatch
{
private:
CComPtr<IDockingWindowSite> fSite;
DWORD fProfferCookie;
int fCurrentFrame;
int fMaxFrameCount;
HBITMAP fImageBitmap;
int fBitmapSize;
DWORD fAdviseCookie;
CComPtr<IDockingWindowSite> fSite;
DWORD fProfferCookie;
int fCurrentFrame;
int fMaxFrameCount;
HBITMAP fImageBitmap;
int fBitmapSize;
DWORD fAdviseCookie;
public:
CBrandBand();
~CBrandBand();
void StartAnimation();
void StopAnimation();
void SelectImage();
CBrandBand();
~CBrandBand();
void StartAnimation();
void StopAnimation();
void SelectImage();
public:
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi);
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown* pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown* pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
// message handlers
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// message handlers
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
BEGIN_MSG_MAP(CBrandBand)
// MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
END_MSG_MAP()
BEGIN_MSG_MAP(CBrandBand)
// MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
END_MSG_MAP()
DECLARE_REGISTRY_RESOURCEID(IDR_BRANDBAND)
DECLARE_NOT_AGGREGATABLE(CBrandBand)
DECLARE_REGISTRY_RESOURCEID(IDR_BRANDBAND)
DECLARE_NOT_AGGREGATABLE(CBrandBand)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CBrandBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
END_COM_MAP()
BEGIN_COM_MAP(CBrandBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
END_COM_MAP()
};

View file

@ -39,12 +39,12 @@ OBJECT_ENTRY(CLSID_BrandBand, CBrandBand)
OBJECT_ENTRY(CLSID_InternetToolbar, CInternetToolbar)
END_OBJECT_MAP()
CBrowseUIModule gModule;
CAtlWinModule gWinModule;
CBrowseUIModule gModule;
CAtlWinModule gWinModule;
void *operator new (size_t, void *buf)
{
return buf;
return buf;
}
/*************************************************************************
@ -53,23 +53,23 @@ void *operator new (size_t, void *buf)
STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
{
TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
/* HACK - the global constructors don't run, so I placement new them here */
new (&gModule) CBrowseUIModule;
new (&gWinModule) CAtlWinModule;
new (&_AtlBaseModule) CAtlBaseModule;
new (&_AtlComModule) CAtlComModule;
if (dwReason == DLL_PROCESS_ATTACH)
{
gModule.Init(ObjectMap, hInstance, NULL);
DisableThreadLibraryCalls (hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
gModule.Term();
}
return TRUE;
/* HACK - the global constructors don't run, so I placement new them here */
new (&gModule) CBrowseUIModule;
new (&gWinModule) CAtlWinModule;
new (&_AtlBaseModule) CAtlBaseModule;
new (&_AtlComModule) CAtlComModule;
if (dwReason == DLL_PROCESS_ATTACH)
{
gModule.Init(ObjectMap, hInstance, NULL);
DisableThreadLibraryCalls (hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
gModule.Term();
}
return TRUE;
}
/***********************************************************************
@ -77,7 +77,7 @@ STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
*/
STDAPI DllCanUnloadNow()
{
return gModule.DllCanUnloadNow();
return gModule.DllCanUnloadNow();
}
/***********************************************************************
@ -85,7 +85,7 @@ STDAPI DllCanUnloadNow()
*/
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
{
return gModule.DllGetClassObject(rclsid, riid, ppv);
return gModule.DllGetClassObject(rclsid, riid, ppv);
}
/***********************************************************************
@ -93,7 +93,7 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
*/
STDAPI DllRegisterServer()
{
return gModule.DllRegisterServer(FALSE);
return gModule.DllRegisterServer(FALSE);
}
/***********************************************************************
@ -101,7 +101,7 @@ STDAPI DllRegisterServer()
*/
STDAPI DllUnregisterServer()
{
return gModule.DllUnregisterServer(FALSE);
return gModule.DllUnregisterServer(FALSE);
}
/***********************************************************************

View file

@ -27,7 +27,7 @@ extern DWORD WINAPI BrowserThreadProc(LPVOID lpThreadParameter);
*/
extern "C" void WINAPI InitOCHostClass(long param8)
{
// forwards to shdocvw
// forwards to shdocvw
}
/*************************************************************************
@ -35,7 +35,7 @@ extern "C" void WINAPI InitOCHostClass(long param8)
*/
extern "C" long WINAPI SHOpenFolderWindow(IEThreadParamBlock *param8)
{
return 0;
return 0;
}
/*************************************************************************
@ -52,7 +52,7 @@ extern "C" void WINAPI SHCreateSavedWindows()
*/
extern "C" long WINAPI SHCreateFromDesktop(long param8)
{
return -1;
return -1;
}
/*************************************************************************
@ -60,7 +60,7 @@ extern "C" long WINAPI SHCreateFromDesktop(long param8)
*/
extern "C" long WINAPI SHExplorerParseCmdLine(LPCTSTR commandLine)
{
return -1;
return -1;
}
/*************************************************************************
@ -75,7 +75,7 @@ extern "C" void WINAPI UEMRegisterNotify(long param8, long paramC)
*/
extern "C" HRESULT WINAPI SHCreateBandForPidl(LPCITEMIDLIST param8, IUnknown *paramC, BOOL param10)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -83,7 +83,7 @@ extern "C" HRESULT WINAPI SHCreateBandForPidl(LPCITEMIDLIST param8, IUnknown *pa
*/
extern "C" HRESULT WINAPI SHPidlFromDataObject(IDataObject *param8, long *paramC, long param10, FILEDESCRIPTORW *param14)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -91,29 +91,29 @@ extern "C" HRESULT WINAPI SHPidlFromDataObject(IDataObject *param8, long *paramC
*/
extern "C" long WINAPI IDataObject_GetDeskBandState(long param8)
{
return -1;
return -1;
}
/*************************************************************************
* SHCreateIETHREADPARAM [BROWSEUI.123]
*/
extern "C" IEThreadParamBlock *WINAPI SHCreateIETHREADPARAM(
long param8, long paramC, IUnknown *param10, IUnknown *param14)
long param8, long paramC, IUnknown *param10, IUnknown *param14)
{
IEThreadParamBlock *result;
IEThreadParamBlock *result;
result = (IEThreadParamBlock *)LocalAlloc(LMEM_ZEROINIT, 256);
if (result == NULL)
return NULL;
result->offset0 = param8;
result->offset8 = paramC;
result->offsetC = param10;
if (param10 != NULL)
param10->AddRef();
result->offset14 = param14;
if (param14 != NULL)
param14->AddRef();
return result;
result = (IEThreadParamBlock *)LocalAlloc(LMEM_ZEROINIT, 256);
if (result == NULL)
return NULL;
result->offset0 = param8;
result->offset8 = paramC;
result->offsetC = param10;
if (param10 != NULL)
param10->AddRef();
result->offset14 = param14;
if (param14 != NULL)
param14->AddRef();
return result;
}
/*************************************************************************
@ -121,25 +121,25 @@ extern "C" IEThreadParamBlock *WINAPI SHCreateIETHREADPARAM(
*/
extern "C" IEThreadParamBlock *WINAPI SHCloneIETHREADPARAM(IEThreadParamBlock *param)
{
IEThreadParamBlock *result;
IEThreadParamBlock *result;
result = (IEThreadParamBlock *)LocalAlloc(LMEM_FIXED, 256);
if (result == NULL)
return NULL;
memcpy(result, param, 0x40 * 4);
if (result->directoryPIDL != NULL)
result->directoryPIDL = ILClone(result->directoryPIDL);
if (result->offset7C != NULL)
result->offset7C = ILClone(result->offset7C);
if (result->offset80 != NULL)
result->offset80 = ILClone(result->offset80);
if (result->offset70 != NULL)
result->offset70->AddRef();
result = (IEThreadParamBlock *)LocalAlloc(LMEM_FIXED, 256);
if (result == NULL)
return NULL;
memcpy(result, param, 0x40 * 4);
if (result->directoryPIDL != NULL)
result->directoryPIDL = ILClone(result->directoryPIDL);
if (result->offset7C != NULL)
result->offset7C = ILClone(result->offset7C);
if (result->offset80 != NULL)
result->offset80 = ILClone(result->offset80);
if (result->offset70 != NULL)
result->offset70->AddRef();
#if 0
if (result->offsetC != NULL)
result->offsetC->Method2C();
if (result->offsetC != NULL)
result->offsetC->Method2C();
#endif
return result;
return result;
}
/*************************************************************************
@ -147,7 +147,7 @@ extern "C" IEThreadParamBlock *WINAPI SHCloneIETHREADPARAM(IEThreadParamBlock *p
*/
extern "C" long WINAPI SHParseIECommandLine(long param8, long paramC)
{
return -1;
return -1;
}
/*************************************************************************
@ -155,25 +155,25 @@ extern "C" long WINAPI SHParseIECommandLine(long param8, long paramC)
*/
extern "C" void WINAPI SHDestroyIETHREADPARAM(IEThreadParamBlock *param)
{
if (param == NULL)
return;
if (param->directoryPIDL != NULL)
ILFree(param->directoryPIDL);
if (param->offset7C != NULL)
ILFree(param->offset7C);
if ((param->offset4 & 0x80000) == 0 && param->offset80 != NULL)
ILFree(param->offset80);
if (param->offset14 != NULL)
param->offset14->Release();
if (param->offset70 != NULL)
param->offset70->Release();
if (param->offset78 != NULL)
param->offset78->Release();
if (param->offsetC != NULL)
param->offsetC->Release();
if (param->offsetF8 != NULL)
param->offsetF8->Release();
LocalFree(param);
if (param == NULL)
return;
if (param->directoryPIDL != NULL)
ILFree(param->directoryPIDL);
if (param->offset7C != NULL)
ILFree(param->offset7C);
if ((param->offset4 & 0x80000) == 0 && param->offset80 != NULL)
ILFree(param->offset80);
if (param->offset14 != NULL)
param->offset14->Release();
if (param->offset70 != NULL)
param->offset70->Release();
if (param->offset78 != NULL)
param->offset78->Release();
if (param->offsetC != NULL)
param->offsetC->Release();
if (param->offsetF8 != NULL)
param->offsetF8->Release();
LocalFree(param);
}
/*************************************************************************
@ -181,7 +181,7 @@ extern "C" void WINAPI SHDestroyIETHREADPARAM(IEThreadParamBlock *param)
*/
extern "C" HRESULT WINAPI SHOnCWMCommandLine(long param8)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -189,7 +189,7 @@ extern "C" HRESULT WINAPI SHOnCWMCommandLine(long param8)
*/
extern "C" LPITEMIDLIST WINAPI Channel_GetFolderPidl()
{
return NULL;
return NULL;
}
/*************************************************************************
@ -197,7 +197,7 @@ extern "C" LPITEMIDLIST WINAPI Channel_GetFolderPidl()
*/
extern "C" IUnknown *WINAPI ChannelBand_Create(LPITEMIDLIST pidl)
{
return NULL;
return NULL;
}
/*************************************************************************
@ -205,7 +205,7 @@ extern "C" IUnknown *WINAPI ChannelBand_Create(LPITEMIDLIST pidl)
*/
extern "C" HRESULT WINAPI Channels_SetBandInfoSFB(IUnknown *param8)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -213,7 +213,7 @@ extern "C" HRESULT WINAPI Channels_SetBandInfoSFB(IUnknown *param8)
*/
extern "C" HRESULT WINAPI IUnknown_SetBandInfoSFB(IUnknown *param8, long paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -221,7 +221,7 @@ extern "C" HRESULT WINAPI IUnknown_SetBandInfoSFB(IUnknown *param8, long paramC)
*/
extern "C" HRESULT WINAPI Channel_QuickLaunch()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -229,7 +229,7 @@ extern "C" HRESULT WINAPI Channel_QuickLaunch()
*/
extern "C" HRESULT WINAPI SHGetNavigateTarget(long param8, long paramC, long param10, long param14)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -237,7 +237,7 @@ extern "C" HRESULT WINAPI SHGetNavigateTarget(long param8, long paramC, long par
*/
extern "C" HRESULT WINAPI GetInfoTip(IUnknown *param8, long paramC, LPTSTR *param10, long cchMax)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -245,16 +245,16 @@ extern "C" HRESULT WINAPI GetInfoTip(IUnknown *param8, long paramC, LPTSTR *para
*/
extern "C" HRESULT WINAPI SHEnumClassesOfCategories(long param8, long paramC, long param10, long param14, long param18)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
* SHWriteClassesOfCategories [BROWSEUI.137]
*/
extern "C" HRESULT WINAPI SHWriteClassesOfCategories(long param8, long paramC, long param10,
long param14, long param18, long param1C, long param20)
long param14, long param18, long param1C, long param20)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
/*************************************************************************
@ -262,7 +262,7 @@ extern "C" HRESULT WINAPI SHWriteClassesOfCategories(long param8, long paramC, l
*/
extern "C" BOOL WINAPI SHIsExplorerBrowser()
{
return TRUE;
return TRUE;
}
// 75FA56C1h
@ -274,26 +274,26 @@ extern "C" BOOL WINAPI SHIsExplorerBrowser()
*/
extern "C" HRESULT WINAPI SHOpenNewFrame(LPITEMIDLIST pidl, IUnknown *paramC, long param10, long param14)
{
IEThreadParamBlock *parameters;
HANDLE threadHandle;
DWORD threadID;
IEThreadParamBlock *parameters;
HANDLE threadHandle;
DWORD threadID;
parameters = SHCreateIETHREADPARAM(0, 1, paramC, NULL);
if (parameters == NULL)
{
ILFree(pidl);
return E_OUTOFMEMORY;
}
if (paramC != NULL)
parameters->offset10 = param10;
parameters->directoryPIDL = pidl;
parameters->offset4 = param14;
threadHandle = CreateThread(NULL, 0x10000, BrowserThreadProc, parameters, 0, &threadID);
if (threadHandle != NULL)
{
CloseHandle(threadHandle);
return S_OK;
}
SHDestroyIETHREADPARAM(parameters);
return E_FAIL;
parameters = SHCreateIETHREADPARAM(0, 1, paramC, NULL);
if (parameters == NULL)
{
ILFree(pidl);
return E_OUTOFMEMORY;
}
if (paramC != NULL)
parameters->offset10 = param10;
parameters->directoryPIDL = pidl;
parameters->offset4 = param14;
threadHandle = CreateThread(NULL, 0x10000, BrowserThreadProc, parameters, 0, &threadID);
if (threadHandle != NULL)
{
CloseHandle(threadHandle);
return S_OK;
}
SHDestroyIETHREADPARAM(parameters);
return E_FAIL;
}

View file

@ -30,627 +30,627 @@ CCommonBrowser::~CCommonBrowser()
HRESULT STDMETHODCALLTYPE CCommonBrowser::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetParentSite(IOleInPlaceSite **ppipsite)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetTitle(IShellView *psv, LPCWSTR pszName)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetTitle(IShellView *psv, LPWSTR pszName, DWORD cchName)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetOleObject(IOleObject **ppobjv)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetTravelLog(ITravelLog **pptl)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::ShowControlWindow(UINT id, BOOL fShow)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::IsControlWindowShown(UINT id, BOOL *pfShown)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::IEGetDisplayName(LPCITEMIDLIST pidl, LPWSTR pwszName, UINT uFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::IEParseDisplayName(UINT uiCP, LPCWSTR pwszPath, LPCITEMIDLIST *ppidlOut)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::DisplayParseError(HRESULT hres, LPCWSTR pwszPath)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetNavigateState(BNSTATE bnstate)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetNavigateState(BNSTATE *pbnstate)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::NotifyRedirect(IShellView *psv, LPCITEMIDLIST pidl, BOOL *pfDidBrowse)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::UpdateWindowList()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::UpdateBackForwardState()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetFlags(DWORD dwFlags, DWORD dwFlagMask)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetFlags(DWORD *pdwFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::CanNavigateNow( void)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetPidl(LPCITEMIDLIST *ppidl)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetReferrer(LPCITEMIDLIST pidl)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
DWORD STDMETHODCALLTYPE CCommonBrowser::GetBrowserIndex()
{
return 0;
return 0;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetBrowserByIndex(DWORD dwID, IUnknown **ppunk)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetHistoryObject(IOleObject **ppole, IStream **pstm, IBindCtx **ppbc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetHistoryObject(IOleObject *pole, BOOL fIsLocalAnchor)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::CacheOLEServer(IOleObject *pole)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetSetCodePage(VARIANT *pvarIn, VARIANT *pvarOut)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnHttpEquiv(IShellView *psv, BOOL fDone, VARIANT *pvarargIn, VARIANT *pvarargOut)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetPalette(HPALETTE *hpal)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::RegisterWindow(BOOL fForceRegister, int swc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
LRESULT STDMETHODCALLTYPE CCommonBrowser::WndProcBS(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return 0;
return 0;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetAsDefFolderSettings()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetViewRect(RECT *prc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnSize(WPARAM wParam)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnCreate(struct tagCREATESTRUCTW *pcs)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
LRESULT STDMETHODCALLTYPE CCommonBrowser::OnCommand(WPARAM wParam, LPARAM lParam)
{
return 0;
return 0;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnDestroy()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
LRESULT STDMETHODCALLTYPE CCommonBrowser::OnNotify(struct tagNMHDR *pnm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnSetFocus()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnFrameWindowActivateBS(BOOL fActive)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::ReleaseShellView()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::ActivatePendingView()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::CreateViewWindow(
IShellView *psvNew, IShellView *psvOld, LPRECT prcView, HWND *phwnd)
IShellView *psvNew, IShellView *psvOld, LPRECT prcView, HWND *phwnd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::CreateBrowserPropSheetExt(REFIID riid, void **ppv)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetViewWindow(HWND *phwndView)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetBaseBrowserData(LPCBASEBROWSERDATA *pbbd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
LPBASEBROWSERDATA CCommonBrowser::PutBaseBrowserData()
{
return NULL;
return NULL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::InitializeTravelLog(ITravelLog *ptl, DWORD dw)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetTopBrowser()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::Offline(int iCmd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::AllowViewResize(BOOL f)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetActivateState(UINT u)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::UpdateSecureLockIcon(int eSecureLock)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::InitializeDownloadManager()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::InitializeTransitionSite()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_Initialize(HWND hwnd, IUnknown *pauto)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_CancelPendingNavigationAsync( void)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_CancelPendingView()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_MaySaveChanges()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_PauseOrResumeView(BOOL fPaused)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_DisableModeless()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF, DWORD dwFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_TryShell2Rename(IShellView *psv, LPCITEMIDLIST pidlNew)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_SwitchActivationNow()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_ExecChildren(IUnknown *punkBar, BOOL fBroadcast,
const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut)
const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_SendChildren(
HWND hwndBar, BOOL fBroadcast, UINT uMsg, WPARAM wParam, LPARAM lParam)
HWND hwndBar, BOOL fBroadcast, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetFolderSetData(struct tagFolderSetData *pfsd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_OnFocusChange(UINT itb)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::v_ShowHideChildWindows(BOOL fChildOnly)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
UINT STDMETHODCALLTYPE CCommonBrowser::_get_itbLastFocus()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_put_itbLastFocus(UINT itbLastFocus)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_UIActivateView(UINT uState)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_GetViewBorderRect(RECT *prc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_UpdateViewRectSize()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_ResizeNextBorder(UINT itb)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_ResizeView()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_GetEffectiveClientArea(LPRECT lprectBorder, HMONITOR hmon)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
IStream *STDMETHODCALLTYPE CCommonBrowser::v_GetViewStream(LPCITEMIDLIST pidl, DWORD grfMode, LPCWSTR pwszName)
{
return NULL;
return NULL;
}
LRESULT STDMETHODCALLTYPE CCommonBrowser::ForwardViewMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetAcceleratorMenu(HACCEL hacc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
int STDMETHODCALLTYPE CCommonBrowser::_GetToolbarCount()
{
return 0;
return 0;
}
LPTOOLBARITEM STDMETHODCALLTYPE CCommonBrowser::_GetToolbarItem(int itb)
{
return NULL;
return NULL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_SaveToolbars(IStream *pstm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_LoadToolbars(IStream *pstm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_CloseAndReleaseToolbars(BOOL fClose)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::v_MayGetNextToolbarFocus(LPMSG lpMsg, UINT itbNext,
int citb, LPTOOLBARITEM *pptbi, HWND *phwnd)
int citb, LPTOOLBARITEM *pptbi, HWND *phwnd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_ResizeNextBorderHelper(UINT itb, BOOL bUseHmonitor)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
UINT STDMETHODCALLTYPE CCommonBrowser::_FindTBar(IUnknown *punkSrc)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_SetFocus(LPTOOLBARITEM ptbi, HWND hwnd, LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::v_MayTranslateAccelerator(MSG *pmsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_GetBorderDWHelper(IUnknown *punkSrc, LPRECT lprectBorder, BOOL bUseHmonitor)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::v_CheckZoneCrossing(LPCITEMIDLIST pidl)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::_PositionViewWindow(HWND *, RECT *)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::IEParseDisplayNameEx(
unsigned int, const unsigned short *, DWORD, LPITEMIDLIST *)
unsigned int, const unsigned short *, DWORD, LPITEMIDLIST *)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::RemoveMenusSB(HMENU hmenuShared)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetStatusTextSB(LPCOLESTR pszStatusText)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::EnableModelessSB(BOOL fEnable)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::TranslateAcceleratorSB(MSG *pmsg, WORD wID)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::BrowseObject(LPCITEMIDLIST pidl, UINT wFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetViewStateStream(DWORD grfMode, IStream **ppStrm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetControlWindow(UINT id, HWND *lphwnd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::QueryActiveShellView(struct IShellView **ppshv)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnViewWindowActive(struct IShellView *ppshv)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetPropertyBag(long flags, REFIID riid, void **ppvObject)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetWindow(HWND *lphwnd)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::ContextSensitiveHelp(BOOL fEnterMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::GetBorderDW(IUnknown* punkObj, LPRECT prcBorder)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::RequestBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::SetBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::AddToolbar(IUnknown *punkSrc, LPCWSTR pwszItem, DWORD dwAddFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::RemoveToolbar(IUnknown *punkSrc, DWORD dwRemoveFlags)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::FindToolbar(LPCWSTR pwszItem, REFIID riid, void **ppv)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::DragLeave()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CCommonBrowser::Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
{
return E_NOTIMPL;
return E_NOTIMPL;
}

View file

@ -21,187 +21,187 @@
#pragma once
class CCommonBrowser :
public CComCoClass<CCommonBrowser, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IServiceProvider,
public IOleCommandTarget,
public IBrowserService3,
public IShellBrowser,
public IShellBrowserService,
public IDockingWindowSite,
public IDockingWindowFrame,
public IInputObjectSite,
public IDropTarget
public CComCoClass<CCommonBrowser, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IServiceProvider,
public IOleCommandTarget,
public IBrowserService3,
public IShellBrowser,
public IShellBrowserService,
public IDockingWindowSite,
public IDockingWindowFrame,
public IInputObjectSite,
public IDropTarget
{
private:
public:
CCommonBrowser();
~CCommonBrowser();
CCommonBrowser();
~CCommonBrowser();
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IBrowserService methods ***
virtual HRESULT STDMETHODCALLTYPE GetParentSite(IOleInPlaceSite **ppipsite);
virtual HRESULT STDMETHODCALLTYPE SetTitle(IShellView *psv, LPCWSTR pszName);
virtual HRESULT STDMETHODCALLTYPE GetTitle(IShellView *psv, LPWSTR pszName, DWORD cchName);
virtual HRESULT STDMETHODCALLTYPE GetOleObject(IOleObject **ppobjv);
virtual HRESULT STDMETHODCALLTYPE GetTravelLog(ITravelLog **pptl);
virtual HRESULT STDMETHODCALLTYPE ShowControlWindow(UINT id, BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE IsControlWindowShown(UINT id, BOOL *pfShown);
virtual HRESULT STDMETHODCALLTYPE IEGetDisplayName(LPCITEMIDLIST pidl, LPWSTR pwszName, UINT uFlags);
virtual HRESULT STDMETHODCALLTYPE IEParseDisplayName(UINT uiCP, LPCWSTR pwszPath, LPCITEMIDLIST *ppidlOut);
virtual HRESULT STDMETHODCALLTYPE DisplayParseError(HRESULT hres, LPCWSTR pwszPath);
virtual HRESULT STDMETHODCALLTYPE NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF);
virtual HRESULT STDMETHODCALLTYPE SetNavigateState(BNSTATE bnstate);
virtual HRESULT STDMETHODCALLTYPE GetNavigateState(BNSTATE *pbnstate);
virtual HRESULT STDMETHODCALLTYPE NotifyRedirect(IShellView *psv, LPCITEMIDLIST pidl, BOOL *pfDidBrowse);
virtual HRESULT STDMETHODCALLTYPE UpdateWindowList();
virtual HRESULT STDMETHODCALLTYPE UpdateBackForwardState();
virtual HRESULT STDMETHODCALLTYPE SetFlags(DWORD dwFlags, DWORD dwFlagMask);
virtual HRESULT STDMETHODCALLTYPE GetFlags(DWORD *pdwFlags);
virtual HRESULT STDMETHODCALLTYPE CanNavigateNow();
virtual HRESULT STDMETHODCALLTYPE GetPidl(LPCITEMIDLIST *ppidl);
virtual HRESULT STDMETHODCALLTYPE SetReferrer(LPCITEMIDLIST pidl);
virtual DWORD STDMETHODCALLTYPE GetBrowserIndex();
virtual HRESULT STDMETHODCALLTYPE GetBrowserByIndex(DWORD dwID, IUnknown **ppunk);
virtual HRESULT STDMETHODCALLTYPE GetHistoryObject(IOleObject **ppole, IStream **pstm, IBindCtx **ppbc);
virtual HRESULT STDMETHODCALLTYPE SetHistoryObject(IOleObject *pole, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE CacheOLEServer(IOleObject *pole);
virtual HRESULT STDMETHODCALLTYPE GetSetCodePage(VARIANT *pvarIn, VARIANT *pvarOut);
virtual HRESULT STDMETHODCALLTYPE OnHttpEquiv(IShellView *psv, BOOL fDone, VARIANT *pvarargIn, VARIANT *pvarargOut);
virtual HRESULT STDMETHODCALLTYPE GetPalette(HPALETTE *hpal);
virtual HRESULT STDMETHODCALLTYPE RegisterWindow(BOOL fForceRegister, int swc);
// *** IBrowserService methods ***
virtual HRESULT STDMETHODCALLTYPE GetParentSite(IOleInPlaceSite **ppipsite);
virtual HRESULT STDMETHODCALLTYPE SetTitle(IShellView *psv, LPCWSTR pszName);
virtual HRESULT STDMETHODCALLTYPE GetTitle(IShellView *psv, LPWSTR pszName, DWORD cchName);
virtual HRESULT STDMETHODCALLTYPE GetOleObject(IOleObject **ppobjv);
virtual HRESULT STDMETHODCALLTYPE GetTravelLog(ITravelLog **pptl);
virtual HRESULT STDMETHODCALLTYPE ShowControlWindow(UINT id, BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE IsControlWindowShown(UINT id, BOOL *pfShown);
virtual HRESULT STDMETHODCALLTYPE IEGetDisplayName(LPCITEMIDLIST pidl, LPWSTR pwszName, UINT uFlags);
virtual HRESULT STDMETHODCALLTYPE IEParseDisplayName(UINT uiCP, LPCWSTR pwszPath, LPCITEMIDLIST *ppidlOut);
virtual HRESULT STDMETHODCALLTYPE DisplayParseError(HRESULT hres, LPCWSTR pwszPath);
virtual HRESULT STDMETHODCALLTYPE NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF);
virtual HRESULT STDMETHODCALLTYPE SetNavigateState(BNSTATE bnstate);
virtual HRESULT STDMETHODCALLTYPE GetNavigateState(BNSTATE *pbnstate);
virtual HRESULT STDMETHODCALLTYPE NotifyRedirect(IShellView *psv, LPCITEMIDLIST pidl, BOOL *pfDidBrowse);
virtual HRESULT STDMETHODCALLTYPE UpdateWindowList();
virtual HRESULT STDMETHODCALLTYPE UpdateBackForwardState();
virtual HRESULT STDMETHODCALLTYPE SetFlags(DWORD dwFlags, DWORD dwFlagMask);
virtual HRESULT STDMETHODCALLTYPE GetFlags(DWORD *pdwFlags);
virtual HRESULT STDMETHODCALLTYPE CanNavigateNow();
virtual HRESULT STDMETHODCALLTYPE GetPidl(LPCITEMIDLIST *ppidl);
virtual HRESULT STDMETHODCALLTYPE SetReferrer(LPCITEMIDLIST pidl);
virtual DWORD STDMETHODCALLTYPE GetBrowserIndex();
virtual HRESULT STDMETHODCALLTYPE GetBrowserByIndex(DWORD dwID, IUnknown **ppunk);
virtual HRESULT STDMETHODCALLTYPE GetHistoryObject(IOleObject **ppole, IStream **pstm, IBindCtx **ppbc);
virtual HRESULT STDMETHODCALLTYPE SetHistoryObject(IOleObject *pole, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE CacheOLEServer(IOleObject *pole);
virtual HRESULT STDMETHODCALLTYPE GetSetCodePage(VARIANT *pvarIn, VARIANT *pvarOut);
virtual HRESULT STDMETHODCALLTYPE OnHttpEquiv(IShellView *psv, BOOL fDone, VARIANT *pvarargIn, VARIANT *pvarargOut);
virtual HRESULT STDMETHODCALLTYPE GetPalette(HPALETTE *hpal);
virtual HRESULT STDMETHODCALLTYPE RegisterWindow(BOOL fForceRegister, int swc);
// *** IBrowserService2 methods ***
virtual LRESULT STDMETHODCALLTYPE WndProcBS(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE SetAsDefFolderSettings();
virtual HRESULT STDMETHODCALLTYPE GetViewRect(RECT *prc);
virtual HRESULT STDMETHODCALLTYPE OnSize(WPARAM wParam);
virtual HRESULT STDMETHODCALLTYPE OnCreate(struct tagCREATESTRUCTW *pcs);
virtual LRESULT STDMETHODCALLTYPE OnCommand(WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE OnDestroy();
virtual LRESULT STDMETHODCALLTYPE OnNotify(struct tagNMHDR *pnm);
virtual HRESULT STDMETHODCALLTYPE OnSetFocus();
virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivateBS(BOOL fActive);
virtual HRESULT STDMETHODCALLTYPE ReleaseShellView();
virtual HRESULT STDMETHODCALLTYPE ActivatePendingView();
virtual HRESULT STDMETHODCALLTYPE CreateViewWindow(IShellView *psvNew, IShellView *psvOld, LPRECT prcView, HWND *phwnd);
virtual HRESULT STDMETHODCALLTYPE CreateBrowserPropSheetExt(REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE GetViewWindow(HWND *phwndView);
virtual HRESULT STDMETHODCALLTYPE GetBaseBrowserData(LPCBASEBROWSERDATA *pbbd);
virtual LPBASEBROWSERDATA STDMETHODCALLTYPE PutBaseBrowserData();
virtual HRESULT STDMETHODCALLTYPE InitializeTravelLog(ITravelLog *ptl, DWORD dw);
virtual HRESULT STDMETHODCALLTYPE SetTopBrowser();
virtual HRESULT STDMETHODCALLTYPE Offline(int iCmd);
virtual HRESULT STDMETHODCALLTYPE AllowViewResize(BOOL f);
virtual HRESULT STDMETHODCALLTYPE SetActivateState(UINT u);
virtual HRESULT STDMETHODCALLTYPE UpdateSecureLockIcon(int eSecureLock);
virtual HRESULT STDMETHODCALLTYPE InitializeDownloadManager();
virtual HRESULT STDMETHODCALLTYPE InitializeTransitionSite();
virtual HRESULT STDMETHODCALLTYPE _Initialize(HWND hwnd, IUnknown *pauto);
virtual HRESULT STDMETHODCALLTYPE _CancelPendingNavigationAsync();
virtual HRESULT STDMETHODCALLTYPE _CancelPendingView();
virtual HRESULT STDMETHODCALLTYPE _MaySaveChanges();
virtual HRESULT STDMETHODCALLTYPE _PauseOrResumeView(BOOL fPaused);
virtual HRESULT STDMETHODCALLTYPE _DisableModeless();
virtual HRESULT STDMETHODCALLTYPE _NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF, DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE _TryShell2Rename(IShellView *psv, LPCITEMIDLIST pidlNew);
virtual HRESULT STDMETHODCALLTYPE _SwitchActivationNow();
virtual HRESULT STDMETHODCALLTYPE _ExecChildren(IUnknown *punkBar, BOOL fBroadcast, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
virtual HRESULT STDMETHODCALLTYPE _SendChildren(HWND hwndBar, BOOL fBroadcast, UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE GetFolderSetData(struct tagFolderSetData *pfsd);
virtual HRESULT STDMETHODCALLTYPE _OnFocusChange(UINT itb);
virtual HRESULT STDMETHODCALLTYPE v_ShowHideChildWindows(BOOL fChildOnly);
virtual UINT STDMETHODCALLTYPE _get_itbLastFocus();
virtual HRESULT STDMETHODCALLTYPE _put_itbLastFocus(UINT itbLastFocus);
virtual HRESULT STDMETHODCALLTYPE _UIActivateView(UINT uState);
virtual HRESULT STDMETHODCALLTYPE _GetViewBorderRect(RECT *prc);
virtual HRESULT STDMETHODCALLTYPE _UpdateViewRectSize();
virtual HRESULT STDMETHODCALLTYPE _ResizeNextBorder(UINT itb);
virtual HRESULT STDMETHODCALLTYPE _ResizeView();
virtual HRESULT STDMETHODCALLTYPE _GetEffectiveClientArea(LPRECT lprectBorder, HMONITOR hmon);
virtual IStream *STDMETHODCALLTYPE v_GetViewStream(LPCITEMIDLIST pidl, DWORD grfMode, LPCWSTR pwszName);
virtual LRESULT STDMETHODCALLTYPE ForwardViewMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE SetAcceleratorMenu(HACCEL hacc);
virtual int STDMETHODCALLTYPE _GetToolbarCount();
virtual LPTOOLBARITEM STDMETHODCALLTYPE _GetToolbarItem(int itb);
virtual HRESULT STDMETHODCALLTYPE _SaveToolbars(IStream *pstm);
virtual HRESULT STDMETHODCALLTYPE _LoadToolbars(IStream *pstm);
virtual HRESULT STDMETHODCALLTYPE _CloseAndReleaseToolbars(BOOL fClose);
virtual HRESULT STDMETHODCALLTYPE v_MayGetNextToolbarFocus(LPMSG lpMsg, UINT itbNext, int citb, LPTOOLBARITEM *pptbi, HWND *phwnd);
virtual HRESULT STDMETHODCALLTYPE _ResizeNextBorderHelper(UINT itb, BOOL bUseHmonitor);
virtual UINT STDMETHODCALLTYPE _FindTBar(IUnknown *punkSrc);
virtual HRESULT STDMETHODCALLTYPE _SetFocus(LPTOOLBARITEM ptbi, HWND hwnd, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE v_MayTranslateAccelerator(MSG *pmsg);
virtual HRESULT STDMETHODCALLTYPE _GetBorderDWHelper(IUnknown *punkSrc, LPRECT lprectBorder, BOOL bUseHmonitor);
virtual HRESULT STDMETHODCALLTYPE v_CheckZoneCrossing(LPCITEMIDLIST pidl);
// *** IBrowserService2 methods ***
virtual LRESULT STDMETHODCALLTYPE WndProcBS(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE SetAsDefFolderSettings();
virtual HRESULT STDMETHODCALLTYPE GetViewRect(RECT *prc);
virtual HRESULT STDMETHODCALLTYPE OnSize(WPARAM wParam);
virtual HRESULT STDMETHODCALLTYPE OnCreate(struct tagCREATESTRUCTW *pcs);
virtual LRESULT STDMETHODCALLTYPE OnCommand(WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE OnDestroy();
virtual LRESULT STDMETHODCALLTYPE OnNotify(struct tagNMHDR *pnm);
virtual HRESULT STDMETHODCALLTYPE OnSetFocus();
virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivateBS(BOOL fActive);
virtual HRESULT STDMETHODCALLTYPE ReleaseShellView();
virtual HRESULT STDMETHODCALLTYPE ActivatePendingView();
virtual HRESULT STDMETHODCALLTYPE CreateViewWindow(IShellView *psvNew, IShellView *psvOld, LPRECT prcView, HWND *phwnd);
virtual HRESULT STDMETHODCALLTYPE CreateBrowserPropSheetExt(REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE GetViewWindow(HWND *phwndView);
virtual HRESULT STDMETHODCALLTYPE GetBaseBrowserData(LPCBASEBROWSERDATA *pbbd);
virtual LPBASEBROWSERDATA STDMETHODCALLTYPE PutBaseBrowserData();
virtual HRESULT STDMETHODCALLTYPE InitializeTravelLog(ITravelLog *ptl, DWORD dw);
virtual HRESULT STDMETHODCALLTYPE SetTopBrowser();
virtual HRESULT STDMETHODCALLTYPE Offline(int iCmd);
virtual HRESULT STDMETHODCALLTYPE AllowViewResize(BOOL f);
virtual HRESULT STDMETHODCALLTYPE SetActivateState(UINT u);
virtual HRESULT STDMETHODCALLTYPE UpdateSecureLockIcon(int eSecureLock);
virtual HRESULT STDMETHODCALLTYPE InitializeDownloadManager();
virtual HRESULT STDMETHODCALLTYPE InitializeTransitionSite();
virtual HRESULT STDMETHODCALLTYPE _Initialize(HWND hwnd, IUnknown *pauto);
virtual HRESULT STDMETHODCALLTYPE _CancelPendingNavigationAsync();
virtual HRESULT STDMETHODCALLTYPE _CancelPendingView();
virtual HRESULT STDMETHODCALLTYPE _MaySaveChanges();
virtual HRESULT STDMETHODCALLTYPE _PauseOrResumeView(BOOL fPaused);
virtual HRESULT STDMETHODCALLTYPE _DisableModeless();
virtual HRESULT STDMETHODCALLTYPE _NavigateToPidl(LPCITEMIDLIST pidl, DWORD grfHLNF, DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE _TryShell2Rename(IShellView *psv, LPCITEMIDLIST pidlNew);
virtual HRESULT STDMETHODCALLTYPE _SwitchActivationNow();
virtual HRESULT STDMETHODCALLTYPE _ExecChildren(IUnknown *punkBar, BOOL fBroadcast, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
virtual HRESULT STDMETHODCALLTYPE _SendChildren(HWND hwndBar, BOOL fBroadcast, UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE GetFolderSetData(struct tagFolderSetData *pfsd);
virtual HRESULT STDMETHODCALLTYPE _OnFocusChange(UINT itb);
virtual HRESULT STDMETHODCALLTYPE v_ShowHideChildWindows(BOOL fChildOnly);
virtual UINT STDMETHODCALLTYPE _get_itbLastFocus();
virtual HRESULT STDMETHODCALLTYPE _put_itbLastFocus(UINT itbLastFocus);
virtual HRESULT STDMETHODCALLTYPE _UIActivateView(UINT uState);
virtual HRESULT STDMETHODCALLTYPE _GetViewBorderRect(RECT *prc);
virtual HRESULT STDMETHODCALLTYPE _UpdateViewRectSize();
virtual HRESULT STDMETHODCALLTYPE _ResizeNextBorder(UINT itb);
virtual HRESULT STDMETHODCALLTYPE _ResizeView();
virtual HRESULT STDMETHODCALLTYPE _GetEffectiveClientArea(LPRECT lprectBorder, HMONITOR hmon);
virtual IStream *STDMETHODCALLTYPE v_GetViewStream(LPCITEMIDLIST pidl, DWORD grfMode, LPCWSTR pwszName);
virtual LRESULT STDMETHODCALLTYPE ForwardViewMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
virtual HRESULT STDMETHODCALLTYPE SetAcceleratorMenu(HACCEL hacc);
virtual int STDMETHODCALLTYPE _GetToolbarCount();
virtual LPTOOLBARITEM STDMETHODCALLTYPE _GetToolbarItem(int itb);
virtual HRESULT STDMETHODCALLTYPE _SaveToolbars(IStream *pstm);
virtual HRESULT STDMETHODCALLTYPE _LoadToolbars(IStream *pstm);
virtual HRESULT STDMETHODCALLTYPE _CloseAndReleaseToolbars(BOOL fClose);
virtual HRESULT STDMETHODCALLTYPE v_MayGetNextToolbarFocus(LPMSG lpMsg, UINT itbNext, int citb, LPTOOLBARITEM *pptbi, HWND *phwnd);
virtual HRESULT STDMETHODCALLTYPE _ResizeNextBorderHelper(UINT itb, BOOL bUseHmonitor);
virtual UINT STDMETHODCALLTYPE _FindTBar(IUnknown *punkSrc);
virtual HRESULT STDMETHODCALLTYPE _SetFocus(LPTOOLBARITEM ptbi, HWND hwnd, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE v_MayTranslateAccelerator(MSG *pmsg);
virtual HRESULT STDMETHODCALLTYPE _GetBorderDWHelper(IUnknown *punkSrc, LPRECT lprectBorder, BOOL bUseHmonitor);
virtual HRESULT STDMETHODCALLTYPE v_CheckZoneCrossing(LPCITEMIDLIST pidl);
// *** IBrowserService3 methods ***
virtual HRESULT STDMETHODCALLTYPE _PositionViewWindow(HWND *, RECT *);
virtual HRESULT STDMETHODCALLTYPE IEParseDisplayNameEx(unsigned int, const unsigned short *, DWORD, LPITEMIDLIST *);
// *** IBrowserService3 methods ***
virtual HRESULT STDMETHODCALLTYPE _PositionViewWindow(HWND *, RECT *);
virtual HRESULT STDMETHODCALLTYPE IEParseDisplayNameEx(unsigned int, const unsigned short *, DWORD, LPITEMIDLIST *);
// *** IShellBrowser methods ***
virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
virtual HRESULT STDMETHODCALLTYPE SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject);
virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(HMENU hmenuShared);
virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(LPCOLESTR pszStatusText);
virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(BOOL fEnable);
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorSB(MSG *pmsg, WORD wID);
virtual HRESULT STDMETHODCALLTYPE BrowseObject(LPCITEMIDLIST pidl, UINT wFlags);
virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(DWORD grfMode, IStream **ppStrm);
virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret);
virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(struct IShellView **ppshv);
virtual HRESULT STDMETHODCALLTYPE OnViewWindowActive(struct IShellView *ppshv);
virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags);
// *** IShellBrowser methods ***
virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
virtual HRESULT STDMETHODCALLTYPE SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject);
virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(HMENU hmenuShared);
virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(LPCOLESTR pszStatusText);
virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(BOOL fEnable);
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorSB(MSG *pmsg, WORD wID);
virtual HRESULT STDMETHODCALLTYPE BrowseObject(LPCITEMIDLIST pidl, UINT wFlags);
virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(DWORD grfMode, IStream **ppStrm);
virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret);
virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(struct IShellView **ppshv);
virtual HRESULT STDMETHODCALLTYPE OnViewWindowActive(struct IShellView *ppshv);
virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags);
// *** IShellBowserService methods ***
virtual HRESULT STDMETHODCALLTYPE GetPropertyBag(long flags, REFIID riid, void **ppvObject);
// *** IShellBowserService methods ***
virtual HRESULT STDMETHODCALLTYPE GetPropertyBag(long flags, REFIID riid, void **ppvObject);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDockingWindowSite methods ***
virtual HRESULT STDMETHODCALLTYPE GetBorderDW(IUnknown* punkObj, LPRECT prcBorder);
virtual HRESULT STDMETHODCALLTYPE RequestBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw);
virtual HRESULT STDMETHODCALLTYPE SetBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw);
// *** IDockingWindowSite methods ***
virtual HRESULT STDMETHODCALLTYPE GetBorderDW(IUnknown* punkObj, LPRECT prcBorder);
virtual HRESULT STDMETHODCALLTYPE RequestBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw);
virtual HRESULT STDMETHODCALLTYPE SetBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw);
// *** IDockingWindowFrame methods ***
virtual HRESULT STDMETHODCALLTYPE AddToolbar(IUnknown *punkSrc, LPCWSTR pwszItem, DWORD dwAddFlags);
virtual HRESULT STDMETHODCALLTYPE RemoveToolbar(IUnknown *punkSrc, DWORD dwRemoveFlags);
virtual HRESULT STDMETHODCALLTYPE FindToolbar(LPCWSTR pwszItem, REFIID riid, void **ppv);
// *** IDockingWindowFrame methods ***
virtual HRESULT STDMETHODCALLTYPE AddToolbar(IUnknown *punkSrc, LPCWSTR pwszItem, DWORD dwAddFlags);
virtual HRESULT STDMETHODCALLTYPE RemoveToolbar(IUnknown *punkSrc, DWORD dwRemoveFlags);
virtual HRESULT STDMETHODCALLTYPE FindToolbar(LPCWSTR pwszItem, REFIID riid, void **ppv);
// *** IInputObjectSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
// *** IInputObjectSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
// *** IDropTarget methods ***
virtual HRESULT STDMETHODCALLTYPE DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragLeave();
virtual HRESULT STDMETHODCALLTYPE Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
// *** IDropTarget methods ***
virtual HRESULT STDMETHODCALLTYPE DragEnter(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragLeave();
virtual HRESULT STDMETHODCALLTYPE Drop(IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
DECLARE_REGISTRY_RESOURCEID(IDR_COMMONBROWSER)
DECLARE_REGISTRY_RESOURCEID(IDR_COMMONBROWSER)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CCommonBrowser)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IBrowserService, IBrowserService)
COM_INTERFACE_ENTRY_IID(IID_IBrowserService2, IBrowserService2)
COM_INTERFACE_ENTRY_IID(IID_IBrowserService3, IBrowserService3)
COM_INTERFACE_ENTRY_IID(IID_IShellBrowser, IShellBrowser)
COM_INTERFACE_ENTRY_IID(IID_IShellBrowserService, IShellBrowserService)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDockingWindowSite)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite, IDockingWindowSite)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindowFrame, IDockingWindowFrame)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
END_COM_MAP()
BEGIN_COM_MAP(CCommonBrowser)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IBrowserService, IBrowserService)
COM_INTERFACE_ENTRY_IID(IID_IBrowserService2, IBrowserService2)
COM_INTERFACE_ENTRY_IID(IID_IBrowserService3, IBrowserService3)
COM_INTERFACE_ENTRY_IID(IID_IShellBrowser, IShellBrowser)
COM_INTERFACE_ENTRY_IID(IID_IShellBrowserService, IShellBrowserService)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDockingWindowSite)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite, IDockingWindowSite)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindowFrame, IDockingWindowFrame)
COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
END_COM_MAP()
};

View file

@ -30,11 +30,11 @@ CGlobalFolderSettings::~CGlobalFolderSettings()
HRESULT STDMETHODCALLTYPE CGlobalFolderSettings::Get(DEFFOLDERSETTINGS *paramC, int param10)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CGlobalFolderSettings::Set(
const DEFFOLDERSETTINGS *paramC, int param10, unsigned int param14)
{
return E_NOTIMPL;
return E_NOTIMPL;
}

View file

@ -21,25 +21,25 @@
#pragma once
class CGlobalFolderSettings :
public CComCoClass<CGlobalFolderSettings, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IGlobalFolderSettings
public CComCoClass<CGlobalFolderSettings, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IGlobalFolderSettings
{
private:
public:
CGlobalFolderSettings();
~CGlobalFolderSettings();
CGlobalFolderSettings();
~CGlobalFolderSettings();
// *** IGlobalFolderSettings methods ***
virtual HRESULT STDMETHODCALLTYPE Get(DEFFOLDERSETTINGS *paramC, int param10);
virtual HRESULT STDMETHODCALLTYPE Set(const DEFFOLDERSETTINGS *paramC, int param10, unsigned int param14);
// *** IGlobalFolderSettings methods ***
virtual HRESULT STDMETHODCALLTYPE Get(DEFFOLDERSETTINGS *paramC, int param10);
virtual HRESULT STDMETHODCALLTYPE Set(const DEFFOLDERSETTINGS *paramC, int param10, unsigned int param14);
DECLARE_REGISTRY_RESOURCEID(IDR_GLOBALFOLDERSETTINGS)
DECLARE_NOT_AGGREGATABLE(CGlobalFolderSettings)
DECLARE_REGISTRY_RESOURCEID(IDR_GLOBALFOLDERSETTINGS)
DECLARE_NOT_AGGREGATABLE(CGlobalFolderSettings)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CGlobalFolderSettings)
COM_INTERFACE_ENTRY_IID(IID_IGlobalFolderSettings, IGlobalFolderSettings)
END_COM_MAP()
BEGIN_COM_MAP(CGlobalFolderSettings)
COM_INTERFACE_ENTRY_IID(IID_IGlobalFolderSettings, IGlobalFolderSettings)
END_COM_MAP()
};

File diff suppressed because it is too large Load diff

View file

@ -45,196 +45,196 @@ static const int gPasteCommandID = 0x701a;
static const int gFolderOptionsCommandID = 41251;
class CMenuCallback :
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellMenuCallback
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IShellMenuCallback
{
private:
CComPtr<IShellMenu> fFavoritesMenu;
CComPtr<IShellMenu> fFavoritesMenu;
public:
CMenuCallback();
~CMenuCallback();
CMenuCallback();
~CMenuCallback();
HRESULT STDMETHODCALLTYPE GetObject(LPSMDATA psmd, REFIID riid, void **ppvObject);
HRESULT STDMETHODCALLTYPE GetObject(LPSMDATA psmd, REFIID riid, void **ppvObject);
public:
// *** IShellMenuCallback methods ***
virtual HRESULT STDMETHODCALLTYPE CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam);
// *** IShellMenuCallback methods ***
virtual HRESULT STDMETHODCALLTYPE CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BEGIN_COM_MAP(CMenuCallback)
COM_INTERFACE_ENTRY_IID(IID_IShellMenuCallback, IShellMenuCallback)
COM_INTERFACE_ENTRY_IID(IID_IShellMenuCallback, IShellMenuCallback)
END_COM_MAP()
};
class CInternetToolbar :
public CWindowImpl<CInternetToolbar, CWindow, CControlWinTraits>,
public CComCoClass<CInternetToolbar, &CLSID_InternetToolbar>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IInputObject,
public IDockingWindow,
public IPersistStreamInit,
public IOleCommandTarget,
public IDispatch,
public IExplorerToolbar,
public IShellChangeNotify,
public IObjectWithSite,
public IServiceProvider,
public IWinEventHandler,
public IBandSite
public CWindowImpl<CInternetToolbar, CWindow, CControlWinTraits>,
public CComCoClass<CInternetToolbar, &CLSID_InternetToolbar>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IInputObject,
public IDockingWindow,
public IPersistStreamInit,
public IOleCommandTarget,
public IDispatch,
public IExplorerToolbar,
public IShellChangeNotify,
public IObjectWithSite,
public IServiceProvider,
public IWinEventHandler,
public IBandSite
{
public:
CComPtr<IUnknown> fSite; // our site
HWND fMainReBar; // rebar for top of window
bool fLocked; // is bar locked to prevent changes?
CComPtr<IShellMenu> fMenuBar; // the menu rebar
HWND fMenuBandWindow;
HWND fNavigationWindow;
CComPtr<IUnknown> fLogoBar; // the reactos logo
CComPtr<IUnknown> fControlsBar; // navigation controls
CComPtr<IUnknown> fNavigationBar; // address bar
CComObject<CMenuCallback> fMenuCallback;
CComPtr<IOleCommandTarget> fCommandTarget;
GUID fCommandCategory;
HWND fToolbarWindow;
DWORD fAdviseCookie;
CComPtr<IBandProxy> fBandProxy;
CComPtr<IUnknown> fSite; // our site
HWND fMainReBar; // rebar for top of window
bool fLocked; // is bar locked to prevent changes?
CComPtr<IShellMenu> fMenuBar; // the menu rebar
HWND fMenuBandWindow;
HWND fNavigationWindow;
CComPtr<IUnknown> fLogoBar; // the reactos logo
CComPtr<IUnknown> fControlsBar; // navigation controls
CComPtr<IUnknown> fNavigationBar; // address bar
CComObject<CMenuCallback> fMenuCallback;
CComPtr<IOleCommandTarget> fCommandTarget;
GUID fCommandCategory;
HWND fToolbarWindow;
DWORD fAdviseCookie;
CComPtr<IBandProxy> fBandProxy;
public:
CInternetToolbar();
~CInternetToolbar();
void AddDockItem(IUnknown *newItem, int bandID, int flags);
HRESULT ReserveBorderSpace();
HRESULT CreateMenuBar(IShellMenu **menuBar);
HRESULT CreateBrandBand(IUnknown **logoBar);
HRESULT CreateToolsBar(IUnknown **toolsBar);
HRESULT CreateAddressBand(IUnknown **toolsBar);
HRESULT LockUnlockToolbars(bool locked);
HRESULT CommandStateChanged(bool newValue, int commandID);
HRESULT CreateAndInitBandProxy();
CInternetToolbar();
~CInternetToolbar();
void AddDockItem(IUnknown *newItem, int bandID, int flags);
HRESULT ReserveBorderSpace();
HRESULT CreateMenuBar(IShellMenu **menuBar);
HRESULT CreateBrandBand(IUnknown **logoBar);
HRESULT CreateToolsBar(IUnknown **toolsBar);
HRESULT CreateAddressBand(IUnknown **toolsBar);
HRESULT LockUnlockToolbars(bool locked);
HRESULT CommandStateChanged(bool newValue, int commandID);
HRESULT CreateAndInitBandProxy();
public:
// *** IInputObject specific methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStreamInit methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
virtual HRESULT STDMETHODCALLTYPE InitNew();
// *** IPersistStreamInit methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
virtual HRESULT STDMETHODCALLTYPE InitNew();
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
// *** IExplorerToolbar methods ***
virtual HRESULT STDMETHODCALLTYPE SetCommandTarget(IUnknown *theTarget, GUID *category, long param14);
virtual HRESULT STDMETHODCALLTYPE Unknown1();
virtual HRESULT STDMETHODCALLTYPE AddButtons(const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons);
virtual HRESULT STDMETHODCALLTYPE AddString(const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18);
virtual HRESULT STDMETHODCALLTYPE GetButton(const GUID *pguidCmdGroup, long param10, long param14);
virtual HRESULT STDMETHODCALLTYPE GetState(const GUID *pguidCmdGroup, long commandID, long *theState);
virtual HRESULT STDMETHODCALLTYPE SetState(const GUID *pguidCmdGroup, long commandID, long theState);
virtual HRESULT STDMETHODCALLTYPE AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20);
virtual HRESULT STDMETHODCALLTYPE GetBitmapSize(long *paramC);
virtual HRESULT STDMETHODCALLTYPE SendToolbarMsg(const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result);
virtual HRESULT STDMETHODCALLTYPE SetImageList(const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18);
virtual HRESULT STDMETHODCALLTYPE ModifyButton(const GUID *pguidCmdGroup, long param10, long param14);
// *** IExplorerToolbar methods ***
virtual HRESULT STDMETHODCALLTYPE SetCommandTarget(IUnknown *theTarget, GUID *category, long param14);
virtual HRESULT STDMETHODCALLTYPE Unknown1();
virtual HRESULT STDMETHODCALLTYPE AddButtons(const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons);
virtual HRESULT STDMETHODCALLTYPE AddString(const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18);
virtual HRESULT STDMETHODCALLTYPE GetButton(const GUID *pguidCmdGroup, long param10, long param14);
virtual HRESULT STDMETHODCALLTYPE GetState(const GUID *pguidCmdGroup, long commandID, long *theState);
virtual HRESULT STDMETHODCALLTYPE SetState(const GUID *pguidCmdGroup, long commandID, long theState);
virtual HRESULT STDMETHODCALLTYPE AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20);
virtual HRESULT STDMETHODCALLTYPE GetBitmapSize(long *paramC);
virtual HRESULT STDMETHODCALLTYPE SendToolbarMsg(const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result);
virtual HRESULT STDMETHODCALLTYPE SetImageList(const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18);
virtual HRESULT STDMETHODCALLTYPE ModifyButton(const GUID *pguidCmdGroup, long param10, long param14);
// *** IShellChangeNotify methods ***
virtual HRESULT STDMETHODCALLTYPE OnChange(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IBandSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName);
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
// *** IBandSite specific methods ***
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID);
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName);
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState);
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID);
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv);
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo);
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo);
// message handlers
LRESULT OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnMenuDropDown(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnQueryInsert(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnQueryDelete(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnNavigateCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
// message handlers
LRESULT OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled);
LRESULT OnMenuDropDown(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnQueryInsert(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnQueryDelete(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnNavigateCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
BEGIN_MSG_MAP(CInternetToolbar)
COMMAND_ID_HANDLER(gBackCommandID, OnTravelBack)
COMMAND_ID_HANDLER(gForwardCommandID, OnTravelForward)
COMMAND_ID_HANDLER(gUpLevelCommandID, OnUpLevel)
COMMAND_ID_HANDLER(gSearchCommandID, OnSearch)
COMMAND_ID_HANDLER(gFoldersCommandID, OnFolders)
COMMAND_RANGE_HANDLER(0x7000, 0x7fff, OnForwardToCommandTarget)
NOTIFY_HANDLER(0, TBN_DROPDOWN, OnMenuDropDown)
NOTIFY_HANDLER(0, TBN_QUERYINSERT, OnQueryInsert)
NOTIFY_HANDLER(0, TBN_QUERYDELETE, OnQueryDelete)
MESSAGE_HANDLER(WM_COMMAND, OnNavigateCommand)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
NOTIFY_CODE_HANDLER(TTN_NEEDTEXTW, OnTipText)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
END_MSG_MAP()
BEGIN_MSG_MAP(CInternetToolbar)
COMMAND_ID_HANDLER(gBackCommandID, OnTravelBack)
COMMAND_ID_HANDLER(gForwardCommandID, OnTravelForward)
COMMAND_ID_HANDLER(gUpLevelCommandID, OnUpLevel)
COMMAND_ID_HANDLER(gSearchCommandID, OnSearch)
COMMAND_ID_HANDLER(gFoldersCommandID, OnFolders)
COMMAND_RANGE_HANDLER(0x7000, 0x7fff, OnForwardToCommandTarget)
NOTIFY_HANDLER(0, TBN_DROPDOWN, OnMenuDropDown)
NOTIFY_HANDLER(0, TBN_QUERYINSERT, OnQueryInsert)
NOTIFY_HANDLER(0, TBN_QUERYDELETE, OnQueryDelete)
MESSAGE_HANDLER(WM_COMMAND, OnNavigateCommand)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
NOTIFY_CODE_HANDLER(TTN_NEEDTEXTW, OnTipText)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
END_MSG_MAP()
DECLARE_REGISTRY_RESOURCEID(IDR_INTERNETTOOLBAR)
DECLARE_NOT_AGGREGATABLE(CInternetToolbar)
DECLARE_REGISTRY_RESOURCEID(IDR_INTERNETTOOLBAR)
DECLARE_NOT_AGGREGATABLE(CInternetToolbar)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CInternetToolbar)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
// COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStreamInit, IPersistStreamInit)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
COM_INTERFACE_ENTRY_IID(IID_IExplorerToolbar, IExplorerToolbar)
COM_INTERFACE_ENTRY_IID(IID_IShellChangeNotify, IShellChangeNotify)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
END_COM_MAP()
BEGIN_COM_MAP(CInternetToolbar)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
// COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStreamInit, IPersistStreamInit)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
COM_INTERFACE_ENTRY_IID(IID_IExplorerToolbar, IExplorerToolbar)
COM_INTERFACE_ENTRY_IID(IID_IShellChangeNotify, IShellChangeNotify)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IBandSite, IBandSite)
END_COM_MAP()
};

View file

@ -24,20 +24,20 @@ template<class T>
class IProfferServiceImpl : public IProfferService
{
public:
STDMETHODIMP ProfferService(REFGUID rguidService, IServiceProvider *psp, DWORD *pdwCookie)
{
return E_NOTIMPL;
}
STDMETHODIMP ProfferService(REFGUID rguidService, IServiceProvider *psp, DWORD *pdwCookie)
{
return E_NOTIMPL;
}
STDMETHODIMP RevokeService(DWORD dwCookie)
{
return E_NOTIMPL;
}
STDMETHODIMP RevokeService(DWORD dwCookie)
{
return E_NOTIMPL;
}
HRESULT QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
return E_FAIL;
}
HRESULT QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
return E_FAIL;
}
};
/*
@ -50,38 +50,38 @@ template<class T, const IID *piid, class CDV = CComDynamicUnkArray>
class MyIConnectionPointImpl : public IConnectionPointImpl<T, piid, CDV>
{
public:
STDMETHODIMP Advise(IUnknown *pUnkSink, DWORD *pdwCookie)
{
IConnectionPointImpl<T, piid, CDV> *pThisCPImpl;
T *pThis;
IUnknown *adviseSink;
DWORD newCookie;
HRESULT hResult;
STDMETHODIMP Advise(IUnknown *pUnkSink, DWORD *pdwCookie)
{
IConnectionPointImpl<T, piid, CDV> *pThisCPImpl;
T *pThis;
IUnknown *adviseSink;
DWORD newCookie;
HRESULT hResult;
pThis = static_cast<T *>(this);
pThisCPImpl = static_cast<IConnectionPointImpl<T, piid, CDV> *>(this);
if (pdwCookie != NULL)
*pdwCookie = 0;
if (pUnkSink == NULL || pdwCookie == NULL)
return E_POINTER;
hResult = pUnkSink->QueryInterface(IID_IDispatch, reinterpret_cast<void **>(&adviseSink));
if (FAILED(hResult))
{
if (hResult == E_NOINTERFACE)
return CONNECT_E_CANNOTCONNECT;
return hResult;
}
pThis->Lock();
newCookie = pThisCPImpl->m_vec.Add(adviseSink);
pThis->Unlock();
*pdwCookie = newCookie;
if (newCookie != 0)
hResult = S_OK;
else
{
adviseSink->Release();
hResult = CONNECT_E_ADVISELIMIT;
}
return hResult;
}
pThis = static_cast<T *>(this);
pThisCPImpl = static_cast<IConnectionPointImpl<T, piid, CDV> *>(this);
if (pdwCookie != NULL)
*pdwCookie = 0;
if (pUnkSink == NULL || pdwCookie == NULL)
return E_POINTER;
hResult = pUnkSink->QueryInterface(IID_IDispatch, reinterpret_cast<void **>(&adviseSink));
if (FAILED(hResult))
{
if (hResult == E_NOINTERFACE)
return CONNECT_E_CANNOTCONNECT;
return hResult;
}
pThis->Lock();
newCookie = pThisCPImpl->m_vec.Add(adviseSink);
pThis->Unlock();
*pdwCookie = newCookie;
if (newCookie != 0)
hResult = S_OK;
else
{
adviseSink->Release();
hResult = CONNECT_E_ADVISELIMIT;
}
return hResult;
}
};

View file

@ -30,30 +30,30 @@ CRegTreeOptions::~CRegTreeOptions()
HRESULT STDMETHODCALLTYPE CRegTreeOptions::InitTree(HWND paramC, HKEY param10, char const *param14, char const *param18)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CRegTreeOptions::WalkTree(WALK_TREE_CMD paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CRegTreeOptions::ToggleItem(HTREEITEM paramC)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CRegTreeOptions::ShowHelp(HTREEITEM paramC, unsigned long param10)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CRegTreeOptions::SetSite(IUnknown *pUnkSite)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CRegTreeOptions::GetSite(REFIID riid, void **ppvSite)
{
return E_NOTIMPL;
return E_NOTIMPL;
}

View file

@ -21,33 +21,33 @@
#pragma once
class CRegTreeOptions :
public CComCoClass<CRegTreeOptions, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IRegTreeOptions,
public IObjectWithSite
public CComCoClass<CRegTreeOptions, &CLSID_ACLMulti>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IRegTreeOptions,
public IObjectWithSite
{
private:
public:
CRegTreeOptions();
~CRegTreeOptions();
CRegTreeOptions();
~CRegTreeOptions();
// *** IRegTreeOptions methods ***
virtual HRESULT STDMETHODCALLTYPE InitTree(HWND paramC, HKEY param10, char const *param14, char const *param18);
virtual HRESULT STDMETHODCALLTYPE WalkTree(WALK_TREE_CMD paramC);
virtual HRESULT STDMETHODCALLTYPE ToggleItem(HTREEITEM paramC);
virtual HRESULT STDMETHODCALLTYPE ShowHelp(HTREEITEM paramC, unsigned long param10);
// *** IRegTreeOptions methods ***
virtual HRESULT STDMETHODCALLTYPE InitTree(HWND paramC, HKEY param10, char const *param14, char const *param18);
virtual HRESULT STDMETHODCALLTYPE WalkTree(WALK_TREE_CMD paramC);
virtual HRESULT STDMETHODCALLTYPE ToggleItem(HTREEITEM paramC);
virtual HRESULT STDMETHODCALLTYPE ShowHelp(HTREEITEM paramC, unsigned long param10);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
DECLARE_REGISTRY_RESOURCEID(IDR_REGTREEOPTIONS)
DECLARE_NOT_AGGREGATABLE(CRegTreeOptions)
DECLARE_REGISTRY_RESOURCEID(IDR_REGTREEOPTIONS)
DECLARE_NOT_AGGREGATABLE(CRegTreeOptions)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CRegTreeOptions)
COM_INTERFACE_ENTRY_IID(IID_IRegTreeOptions, IRegTreeOptions)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
END_COM_MAP()
BEGIN_COM_MAP(CRegTreeOptions)
COM_INTERFACE_ENTRY_IID(IID_IRegTreeOptions, IRegTreeOptions)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
END_COM_MAP()
};

View file

@ -20,83 +20,83 @@
#pragma once
#define IDM_FILE_CLOSE 0xA021
#define IDM_FILE_EXPLORE_MENU 0xA027
#define IDM_EXPLORE_ITEM_FIRST 0xA470
#define IDM_EXPLORE_ITEM_LAST 0xA570
#define IDM_FILE_EXPLORE_SEP 0xA028
#define IDM_VIEW_TOOLBARS 0xA201
#define IDM_TOOLBARS_STANDARDBUTTONS 0xA204
#define IDM_TOOLBARS_ADDRESSBAR 0xA205
#define IDM_TOOLBARS_LINKSBAR 0xA206
#define IDM_TOOLBARS_LOCKTOOLBARS 0xA20C
#define IDM_TOOLBARS_CUSTOMIZE 0xA21D
#define IDM_TOOLBARS_TEXTLABELS 0xA207
#define IDM_TOOLBARS_GOBUTTON 0xA20B
#define IDM_VIEW_STATUSBAR 0xA202
#define IDM_VIEW_EXPLORERBAR 0xA230
#define IDM_EXPLORERBAR_SEARCH 0xA231
#define IDM_EXPLORERBAR_FAVORITES 0xA232
#define IDM_EXPLORERBAR_MEDIA 0xA237
#define IDM_EXPLORERBAR_HISTORY 0xA233
#define IDM_EXPLORERBAR_FOLDERS 0xA235
#define IDM_EXPLORERBAR_SEPARATOR 0xA23B
#define IDM_GOTO_BACK 0xA121
#define IDM_GOTO_FORWARD 0xA122
#define IDM_GOTO_UPONELEVEL 0xA022
#define IDM_GOTO_HOMEPAGE 0xA125
#define IDM_VIEW_REFRESH 0xA220
#define IDM_FAVORITES_ADDTOFAVORITES 0xA173
#define IDM_FAVORITES_ORGANIZEFAVORITES 0xA172
#define IDM_FAVORITES_EMPTY 0xA17E
#define IDM_TOOLS_MAPNETWORKDRIVE 0xA081
#define IDM_TOOLS_DISCONNECTNETWORKDRIVE 0xA082
#define IDM_TOOLS_SYNCHRONIZE 0xA176
#define IDM_TOOLS_FOLDEROPTIONS 0xA123
#define IDM_HELP_ISTHISCOPYLEGAL 0xA104
#define IDM_HELP_ABOUT 0xA102
#define IDM_FILE_CLOSE 0xA021
#define IDM_FILE_EXPLORE_MENU 0xA027
#define IDM_EXPLORE_ITEM_FIRST 0xA470
#define IDM_EXPLORE_ITEM_LAST 0xA570
#define IDM_FILE_EXPLORE_SEP 0xA028
#define IDM_VIEW_TOOLBARS 0xA201
#define IDM_TOOLBARS_STANDARDBUTTONS 0xA204
#define IDM_TOOLBARS_ADDRESSBAR 0xA205
#define IDM_TOOLBARS_LINKSBAR 0xA206
#define IDM_TOOLBARS_LOCKTOOLBARS 0xA20C
#define IDM_TOOLBARS_CUSTOMIZE 0xA21D
#define IDM_TOOLBARS_TEXTLABELS 0xA207
#define IDM_TOOLBARS_GOBUTTON 0xA20B
#define IDM_VIEW_STATUSBAR 0xA202
#define IDM_VIEW_EXPLORERBAR 0xA230
#define IDM_EXPLORERBAR_SEARCH 0xA231
#define IDM_EXPLORERBAR_FAVORITES 0xA232
#define IDM_EXPLORERBAR_MEDIA 0xA237
#define IDM_EXPLORERBAR_HISTORY 0xA233
#define IDM_EXPLORERBAR_FOLDERS 0xA235
#define IDM_EXPLORERBAR_SEPARATOR 0xA23B
#define IDM_GOTO_BACK 0xA121
#define IDM_GOTO_FORWARD 0xA122
#define IDM_GOTO_UPONELEVEL 0xA022
#define IDM_GOTO_HOMEPAGE 0xA125
#define IDM_VIEW_REFRESH 0xA220
#define IDM_FAVORITES_ADDTOFAVORITES 0xA173
#define IDM_FAVORITES_ORGANIZEFAVORITES 0xA172
#define IDM_FAVORITES_EMPTY 0xA17E
#define IDM_TOOLS_MAPNETWORKDRIVE 0xA081
#define IDM_TOOLS_DISCONNECTNETWORKDRIVE 0xA082
#define IDM_TOOLS_SYNCHRONIZE 0xA176
#define IDM_TOOLS_FOLDEROPTIONS 0xA123
#define IDM_HELP_ISTHISCOPYLEGAL 0xA104
#define IDM_HELP_ABOUT 0xA102
#define IDM_GOTO_TRAVEL_FIRST 0xA141
#define IDM_GOTO_TRAVEL_LAST 0xA151
#define IDM_GOTO_TRAVEL_SEP IDM_GOTO_TRAVEL_FIRST
#define IDM_GOTO_TRAVEL_FIRSTTARGET IDM_GOTO_TRAVEL_FIRST+1
#define IDM_GOTO_TRAVEL_LASTTARGET IDM_GOTO_TRAVEL_LAST
#define IDM_GOTO_TRAVEL_FIRST 0xA141
#define IDM_GOTO_TRAVEL_LAST 0xA151
#define IDM_GOTO_TRAVEL_SEP IDM_GOTO_TRAVEL_FIRST
#define IDM_GOTO_TRAVEL_FIRSTTARGET IDM_GOTO_TRAVEL_FIRST+1
#define IDM_GOTO_TRAVEL_LASTTARGET IDM_GOTO_TRAVEL_LAST
#define IDM_CABINET_CONTEXTMENU 103
#define IDM_CABINET_MAINMENU 104
#define IDM_CABINET_CONTEXTMENU 103
#define IDM_CABINET_MAINMENU 104
#define IDR_ACLMULTI 128
#define IDR_ADDRESSBAND 129
#define IDR_ADDRESSEDITBOX 130
#define IDR_BANDPROXY 131
#define IDR_BANDSITE 132
#define IDR_BANDSITEMENU 133
#define IDR_BRANDBAND 134
#define IDR_COMMONBROWSER 135
#define IDR_INTERNETTOOLBAR 136
#define IDR_GLOBALFOLDERSETTINGS 137
#define IDR_REGTREEOPTIONS 138
#define IDR_ACLMULTI 128
#define IDR_ADDRESSBAND 129
#define IDR_ADDRESSEDITBOX 130
#define IDR_BANDPROXY 131
#define IDR_BANDSITE 132
#define IDR_BANDSITEMENU 133
#define IDR_BRANDBAND 134
#define IDR_COMMONBROWSER 135
#define IDR_INTERNETTOOLBAR 136
#define IDR_GLOBALFOLDERSETTINGS 137
#define IDR_REGTREEOPTIONS 138
#define IDS_SMALLICONS 12301
#define IDS_LARGEICONS 12302
#define IDS_SHOWTEXTLABELS 12303
#define IDS_NOTEXTLABELS 12304
#define IDS_SELECTIVETEXTONRIGHT 12305
#define IDS_GOBUTTONLABEL 12656
#define IDS_GOBUTTONTIPTEMPLATE 12657
#define IDS_SEARCHLABEL 12897
#define IDS_ADDRESSBANDLABEL 12902
#define IDS_FOLDERSLABEL 12919
#define IDS_HISTORYTEXT 13169
#define IDS_UP 58434
#define IDS_BACK 58689
#define IDS_FORWARD 58690
#define IDS_SMALLICONS 12301
#define IDS_LARGEICONS 12302
#define IDS_SHOWTEXTLABELS 12303
#define IDS_NOTEXTLABELS 12304
#define IDS_SELECTIVETEXTONRIGHT 12305
#define IDS_GOBUTTONLABEL 12656
#define IDS_GOBUTTONTIPTEMPLATE 12657
#define IDS_SEARCHLABEL 12897
#define IDS_ADDRESSBANDLABEL 12902
#define IDS_FOLDERSLABEL 12919
#define IDS_HISTORYTEXT 13169
#define IDS_UP 58434
#define IDS_BACK 58689
#define IDS_FORWARD 58690
#define IDR_ACCELERATORS 256
#define IDR_ACCELERATORS 256
#define IDI_CABINET 103
#define IDI_CABINET 103
#define IDD_CUSTOMIZETOOLBAREX 256
#define IDD_CUSTOMIZETOOLBAREX 256
#define IDC_TEXTOPTIONS 4096
#define IDC_ICONOPTIONS 4097
#define IDC_TEXTOPTIONS 4096
#define IDC_ICONOPTIONS 4097

File diff suppressed because it is too large Load diff

View file

@ -29,111 +29,111 @@ TODO:
*/
class CToolsBand :
public CWindowImpl<CToolsBand, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IObjectWithSite,
public IInputObject,
public IPersistStream
public CWindowImpl<CToolsBand, CWindow, CControlWinTraits>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IObjectWithSite,
public IInputObject,
public IPersistStream
{
private:
IDockingWindowSite *fDockSite;
GUID fExecCommandCategory;
CComPtr<IOleCommandTarget> fExecCommandTarget;
IDockingWindowSite *fDockSite;
GUID fExecCommandCategory;
CComPtr<IOleCommandTarget> fExecCommandTarget;
public:
CToolsBand();
~CToolsBand();
CToolsBand();
~CToolsBand();
public:
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi);
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown* pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown* pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// message handlers
LRESULT OnGetButtonInfo(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
// message handlers
LRESULT OnGetButtonInfo(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled);
BEGIN_MSG_MAP(CToolsBand)
// MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
// MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
NOTIFY_HANDLER(0, TBN_GETBUTTONINFOW, OnGetButtonInfo)
// MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
// MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
NOTIFY_HANDLER(0, TBN_GETBUTTONINFOW, OnGetButtonInfo)
END_MSG_MAP()
BEGIN_COM_MAP(CToolsBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleWindow)
COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
};
CToolsBand::CToolsBand()
{
fDockSite = NULL;
fDockSite = NULL;
}
CToolsBand::~CToolsBand()
{
if (fDockSite)
fDockSite->Release();
if (fDockSite)
fDockSite->Release();
}
HRESULT STDMETHODCALLTYPE CToolsBand::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi)
{
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 400;
pdbi->ptMinSize.y = 38;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = 0;
pdbi->ptMaxSize.y = 0;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 0;
pdbi->ptIntegral.y = 0;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 400;
pdbi->ptActual.y = 38;
}
if (pdbi->dwMask & DBIM_TITLE)
wcscpy(pdbi->wszTitle, L"");
if (pdbi->dwMask & DBIM_MODEFLAGS)
pdbi->dwModeFlags = DBIMF_UNDELETEABLE;
if (pdbi->dwMask & DBIM_BKCOLOR)
pdbi->crBkgnd = 0;
return S_OK;
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 400;
pdbi->ptMinSize.y = 38;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = 0;
pdbi->ptMaxSize.y = 0;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 0;
pdbi->ptIntegral.y = 0;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 400;
pdbi->ptActual.y = 38;
}
if (pdbi->dwMask & DBIM_TITLE)
wcscpy(pdbi->wszTitle, L"");
if (pdbi->dwMask & DBIM_MODEFLAGS)
pdbi->dwModeFlags = DBIMF_UNDELETEABLE;
if (pdbi->dwMask & DBIM_BKCOLOR)
pdbi->crBkgnd = 0;
return S_OK;
}
static const int backImageIndex = 0;
@ -168,13 +168,13 @@ static const int upImageIndex = 28;
static const int mapDriveImageIndex = 29;
static const int disconnectImageIndex = 30;
// 31
static const int viewsAltImageIndex = 32; // same image as viewsImageIndex
static const int viewsAltImageIndex = 32; // same image as viewsImageIndex
// 33
// 34
// 35
// 36
// 37
static const int viewsAlt2ImageIndex = 38; // same image as viewsAltImageIndex & viewsImageIndex
static const int viewsAlt2ImageIndex = 38; // same image as viewsAltImageIndex & viewsImageIndex
// 39
// 40
// 41
@ -186,113 +186,113 @@ static const int folderOptionsImageIndex = 46;
const int numShownButtons = 13;
const int numHiddenButtons = 13;
TBBUTTON tbButtonsAdd[numShownButtons + numHiddenButtons] =
TBBUTTON tbButtonsAdd[numShownButtons + numHiddenButtons] =
{
{backImageIndex, gBackCommandID, TBSTATE_ENABLED, BTNS_DROPDOWN | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Back")},
{forwardImageIndex, gForwardCommandID, TBSTATE_ENABLED, BTNS_DROPDOWN, {0}, 0, (INT_PTR)_T("Forward")},
{upImageIndex, gUpLevelCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Up")},
{6, -1, TBSTATE_ENABLED, BTNS_SEP},
{searchImageIndex, gSearchCommandID, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Search")},
{foldersImageIndex, gFoldersCommandID, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Folders")},
{6, -1, TBSTATE_ENABLED, BTNS_SEP},
{moveToImageIndex, gMoveToCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Move To")},
{copyToImageIndex, gCopyToCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Copy To")},
{deleteImageIndex, gDeleteCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Delete")},
{undoImageIndex, gUndoCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Undo")},
{6, -1, TBSTATE_ENABLED, BTNS_SEP},
{viewsImageIndex, gViewsCommandID, TBSTATE_ENABLED, BTNS_WHOLEDROPDOWN, {0}, 0, (INT_PTR)_T("Views")},
{backImageIndex, gBackCommandID, TBSTATE_ENABLED, BTNS_DROPDOWN | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Back")},
{forwardImageIndex, gForwardCommandID, TBSTATE_ENABLED, BTNS_DROPDOWN, {0}, 0, (INT_PTR)_T("Forward")},
{upImageIndex, gUpLevelCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Up")},
{6, -1, TBSTATE_ENABLED, BTNS_SEP},
{searchImageIndex, gSearchCommandID, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Search")},
{foldersImageIndex, gFoldersCommandID, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Folders")},
{6, -1, TBSTATE_ENABLED, BTNS_SEP},
{moveToImageIndex, gMoveToCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Move To")},
{copyToImageIndex, gCopyToCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Copy To")},
{deleteImageIndex, gDeleteCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Delete")},
{undoImageIndex, gUndoCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Undo")},
{6, -1, TBSTATE_ENABLED, BTNS_SEP},
{viewsImageIndex, gViewsCommandID, TBSTATE_ENABLED, BTNS_WHOLEDROPDOWN, {0}, 0, (INT_PTR)_T("Views")},
{0, gStopCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Stop")},
{0, gRefreshCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Refresh")},
{0, gHomeCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Home")},
{mapDriveImageIndex, gMapDriveCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Map Drive")},
{disconnectImageIndex, gDisconnectCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Disconnect")},
{favoritesImageIndex, gFavoritesCommandID, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Favorites")},
{0, gHistoryCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("History")},
{0, gFullScreenCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Full Screen")},
{propertiesImageIndex, gPropertiesCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Properties")},
{cutImageIndex, gCutCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Cut")},
{copyImageIndex, gCopyCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Copy")},
{pasteImageIndex, gPasteCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Paste")},
{folderOptionsImageIndex, gFolderOptionsCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Folder Options")},
{0, gStopCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Stop")},
{0, gRefreshCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Refresh")},
{0, gHomeCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Home")},
{mapDriveImageIndex, gMapDriveCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Map Drive")},
{disconnectImageIndex, gDisconnectCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Disconnect")},
{favoritesImageIndex, gFavoritesCommandID, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_SHOWTEXT, {0}, 0, (INT_PTR)_T("Favorites")},
{0, gHistoryCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("History")},
{0, gFullScreenCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Full Screen")},
{propertiesImageIndex, gPropertiesCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Properties")},
{cutImageIndex, gCutCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Cut")},
{copyImageIndex, gCopyCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Copy")},
{pasteImageIndex, gPasteCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Paste")},
{folderOptionsImageIndex, gFolderOptionsCommandID, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, (INT_PTR)_T("Folder Options")},
};
HRESULT STDMETHODCALLTYPE CToolsBand::SetSite(IUnknown* pUnkSite)
{
HWND parentWindow;
IOleWindow *oleWindow;
HWND toolbar;
HRESULT hResult;
HWND parentWindow;
IOleWindow *oleWindow;
HWND toolbar;
HRESULT hResult;
if (fDockSite != NULL)
fDockSite->Release();
if (pUnkSite == NULL)
return S_OK;
hResult = pUnkSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&fDockSite));
if (FAILED(hResult))
return hResult;
parentWindow = NULL;
hResult = pUnkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
{
oleWindow->GetWindow(&parentWindow);
oleWindow->Release();
}
if (!::IsWindow(parentWindow))
return E_FAIL;
if (fDockSite != NULL)
fDockSite->Release();
if (pUnkSite == NULL)
return S_OK;
hResult = pUnkSite->QueryInterface(IID_IDockingWindowSite, reinterpret_cast<void **>(&fDockSite));
if (FAILED(hResult))
return hResult;
parentWindow = NULL;
hResult = pUnkSite->QueryInterface(IID_IOleWindow, reinterpret_cast<void **>(&oleWindow));
if (SUCCEEDED(hResult))
{
oleWindow->GetWindow(&parentWindow);
oleWindow->Release();
}
if (!::IsWindow(parentWindow))
return E_FAIL;
toolbar = CreateWindowEx(TBSTYLE_EX_DOUBLEBUFFER, TOOLBARCLASSNAMEW, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | TBSTYLE_TOOLTIPS | TBSTYLE_TRANSPARENT | TBSTYLE_REGISTERDROP | TBSTYLE_LIST | TBSTYLE_FLAT |
CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NORESIZE | CCS_TOP, 0, 0, 500, 20, parentWindow, NULL,
_AtlBaseModule.GetModuleInstance(), 0);
if (toolbar == NULL)
return E_FAIL;
SubclassWindow(toolbar);
toolbar = CreateWindowEx(TBSTYLE_EX_DOUBLEBUFFER, TOOLBARCLASSNAMEW, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | TBSTYLE_TOOLTIPS | TBSTYLE_TRANSPARENT | TBSTYLE_REGISTERDROP | TBSTYLE_LIST | TBSTYLE_FLAT |
CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NORESIZE | CCS_TOP, 0, 0, 500, 20, parentWindow, NULL,
_AtlBaseModule.GetModuleInstance(), 0);
if (toolbar == NULL)
return E_FAIL;
SubclassWindow(toolbar);
SendMessage(WM_USER + 100, GetSystemMetrics(SM_CXEDGE) / 2, 0);
SendMessage(TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
SendMessage(TB_SETMAXTEXTROWS, 1, 0);
SendMessage(TB_SETEXTENDEDSTYLE, TBSTYLE_EX_HIDECLIPPEDBUTTONS | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS,
TBSTYLE_EX_HIDECLIPPEDBUTTONS | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS);
SendMessage(WM_USER + 100, GetSystemMetrics(SM_CXEDGE) / 2, 0);
SendMessage(TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
SendMessage(TB_SETMAXTEXTROWS, 1, 0);
SendMessage(TB_SETEXTENDEDSTYLE, TBSTYLE_EX_HIDECLIPPEDBUTTONS | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS,
TBSTYLE_EX_HIDECLIPPEDBUTTONS | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS);
HINSTANCE shell32Instance = GetModuleHandle(_T("shell32.dll"));
HBITMAP imageBitmap = reinterpret_cast<HBITMAP>(
LoadImage(shell32Instance, MAKEINTRESOURCE(214),
IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION));
HINSTANCE shell32Instance = GetModuleHandle(_T("shell32.dll"));
HBITMAP imageBitmap = reinterpret_cast<HBITMAP>(
LoadImage(shell32Instance, MAKEINTRESOURCE(214),
IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION));
DIBSECTION bitmapInfo;
GetObjectW(imageBitmap, sizeof(bitmapInfo), &bitmapInfo);
HIMAGELIST imageList = ImageList_Create(bitmapInfo.dsBm.bmHeight, bitmapInfo.dsBm.bmHeight, ILC_COLOR32, 4, 4);
DIBSECTION bitmapInfo;
GetObjectW(imageBitmap, sizeof(bitmapInfo), &bitmapInfo);
HIMAGELIST imageList = ImageList_Create(bitmapInfo.dsBm.bmHeight, bitmapInfo.dsBm.bmHeight, ILC_COLOR32, 4, 4);
ImageList_Add(imageList, imageBitmap, NULL);
DeleteObject(imageBitmap);
ImageList_Add(imageList, imageBitmap, NULL);
DeleteObject(imageBitmap);
SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imageList);
SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imageList);
SendMessage(TB_ADDBUTTONSW, numShownButtons, (LPARAM)&tbButtonsAdd);
SendMessage(TB_ADDBUTTONSW, numShownButtons, (LPARAM)&tbButtonsAdd);
return hResult;
return hResult;
}
HRESULT STDMETHODCALLTYPE CToolsBand::GetSite(REFIID riid, void **ppvSite)
{
if (fDockSite == NULL)
return E_FAIL;
return fDockSite->QueryInterface(riid, ppvSite);
if (fDockSite == NULL)
return E_FAIL;
return fDockSite->QueryInterface(riid, ppvSite);
}
HRESULT STDMETHODCALLTYPE CToolsBand::GetWindow(HWND *lphwnd)
{
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
if (lphwnd == NULL)
return E_POINTER;
*lphwnd = m_hWnd;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CToolsBand::ContextSensitiveHelp(BOOL fEnterMode)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::CloseDW(DWORD dwReserved)
@ -309,7 +309,7 @@ HRESULT STDMETHODCALLTYPE CToolsBand::CloseDW(DWORD dwReserved)
HRESULT STDMETHODCALLTYPE CToolsBand::ResizeBorderDW(const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::ShowDW(BOOL fShow)
@ -326,75 +326,75 @@ HRESULT STDMETHODCALLTYPE CToolsBand::ShowDW(BOOL fShow)
HRESULT STDMETHODCALLTYPE CToolsBand::HasFocusIO()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::TranslateAcceleratorIO(LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::GetClassID(CLSID *pClassID)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::IsDirty()
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::Load(IStream *pStm)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::Save(IStream *pStm, BOOL fClearDirty)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CToolsBand::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
LRESULT CToolsBand::OnGetButtonInfo(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
{
TBNOTIFYW *pTBntf = reinterpret_cast<TBNOTIFYW *>(pNMHDR);
TBNOTIFYW *pTBntf = reinterpret_cast<TBNOTIFYW *>(pNMHDR);
if (pTBntf->iItem >= 0 && pTBntf->iItem < (numShownButtons + numHiddenButtons))
{
pTBntf->tbButton = tbButtonsAdd[pTBntf->iItem];
return TRUE;
}
else
return FALSE;
return 0;
if (pTBntf->iItem >= 0 && pTBntf->iItem < (numShownButtons + numHiddenButtons))
{
pTBntf->tbButton = tbButtonsAdd[pTBntf->iItem];
return TRUE;
}
else
return FALSE;
return 0;
}
HRESULT CreateToolsBar(REFIID riid, void **ppv)
{
CComObject<CToolsBand> *theMenuBar;
HRESULT hResult;
CComObject<CToolsBand> *theMenuBar;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CToolsBand>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theMenuBar = new CComObject<CToolsBand>);
if (theMenuBar == NULL)
return E_OUTOFMEMORY;
hResult = theMenuBar->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theMenuBar;
return hResult;
}
return S_OK;
}

View file

@ -31,7 +31,7 @@ TODO:
****Change to load maximum size from registry
****Add code to track current size
****Fix InsertMenuEntries to not exceed limit of menu item ids provided. Perhaps the method should try to be intelligent and if there are
too many items, center around the current item? Could cause dispatch problems...
too many items, center around the current item? Could cause dispatch problems...
****Move tool tip text templates to resources
**Simplify code in InsertMenuEntries
Implement UpdateExternal
@ -43,542 +43,542 @@ TODO:
#include "precomp.h"
class CTravelEntry :
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public ITravelEntry
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public ITravelEntry
{
public:
CTravelEntry *fNextEntry;
CTravelEntry *fPreviousEntry;
CTravelEntry *fNextEntry;
CTravelEntry *fPreviousEntry;
private:
LPITEMIDLIST fPIDL;
HGLOBAL fPersistState;
LPITEMIDLIST fPIDL;
HGLOBAL fPersistState;
public:
CTravelEntry();
~CTravelEntry();
HRESULT GetToolTipText(IUnknown *punk, LPWSTR pwzText) const;
long GetSize() const;
CTravelEntry();
~CTravelEntry();
HRESULT GetToolTipText(IUnknown *punk, LPWSTR pwzText) const;
long GetSize() const;
// *** ITravelEntry methods ***
virtual HRESULT STDMETHODCALLTYPE Invoke(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE Update(IUnknown *punk, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE GetPidl(LPITEMIDLIST *ppidl);
// *** ITravelEntry methods ***
virtual HRESULT STDMETHODCALLTYPE Invoke(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE Update(IUnknown *punk, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE GetPidl(LPITEMIDLIST *ppidl);
BEGIN_COM_MAP(CTravelEntry)
COM_INTERFACE_ENTRY_IID(IID_ITravelEntry, ITravelEntry)
COM_INTERFACE_ENTRY_IID(IID_ITravelEntry, ITravelEntry)
END_COM_MAP()
};
class CTravelLog :
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public ITravelLog
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public ITravelLog
{
private:
CTravelEntry *fListHead;
CTravelEntry *fListTail;
CTravelEntry *fCurrentEntry;
long fMaximumSize;
long fCurrentSize;
unsigned long fEntryCount;
CTravelEntry *fListHead;
CTravelEntry *fListTail;
CTravelEntry *fCurrentEntry;
long fMaximumSize;
long fCurrentSize;
unsigned long fEntryCount;
public:
CTravelLog();
~CTravelLog();
HRESULT Initialize();
HRESULT FindRelativeEntry(int offset, CTravelEntry **foundEntry);
void DeleteChain(CTravelEntry *startHere);
void AppendEntry(CTravelEntry *afterEntry, CTravelEntry *newEntry);
CTravelLog();
~CTravelLog();
HRESULT Initialize();
HRESULT FindRelativeEntry(int offset, CTravelEntry **foundEntry);
void DeleteChain(CTravelEntry *startHere);
void AppendEntry(CTravelEntry *afterEntry, CTravelEntry *newEntry);
public:
// *** ITravelLog methods ***
virtual HRESULT STDMETHODCALLTYPE AddEntry(IUnknown *punk, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE UpdateEntry(IUnknown *punk, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE UpdateExternal(IUnknown *punk, IUnknown *punkHLBrowseContext);
virtual HRESULT STDMETHODCALLTYPE Travel(IUnknown *punk, int iOffset);
virtual HRESULT STDMETHODCALLTYPE GetTravelEntry(IUnknown *punk, int iOffset, ITravelEntry **ppte);
virtual HRESULT STDMETHODCALLTYPE FindTravelEntry(IUnknown *punk, LPCITEMIDLIST pidl, ITravelEntry **ppte);
virtual HRESULT STDMETHODCALLTYPE GetToolTipText(IUnknown *punk, int iOffset, int idsTemplate, LPWSTR pwzText, DWORD cchText);
virtual HRESULT STDMETHODCALLTYPE InsertMenuEntries(IUnknown *punk, HMENU hmenu, int nPos, int idFirst, int idLast, DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE Clone(ITravelLog **pptl);
virtual DWORD STDMETHODCALLTYPE CountEntries(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE Revert();
// *** ITravelLog methods ***
virtual HRESULT STDMETHODCALLTYPE AddEntry(IUnknown *punk, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE UpdateEntry(IUnknown *punk, BOOL fIsLocalAnchor);
virtual HRESULT STDMETHODCALLTYPE UpdateExternal(IUnknown *punk, IUnknown *punkHLBrowseContext);
virtual HRESULT STDMETHODCALLTYPE Travel(IUnknown *punk, int iOffset);
virtual HRESULT STDMETHODCALLTYPE GetTravelEntry(IUnknown *punk, int iOffset, ITravelEntry **ppte);
virtual HRESULT STDMETHODCALLTYPE FindTravelEntry(IUnknown *punk, LPCITEMIDLIST pidl, ITravelEntry **ppte);
virtual HRESULT STDMETHODCALLTYPE GetToolTipText(IUnknown *punk, int iOffset, int idsTemplate, LPWSTR pwzText, DWORD cchText);
virtual HRESULT STDMETHODCALLTYPE InsertMenuEntries(IUnknown *punk, HMENU hmenu, int nPos, int idFirst, int idLast, DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE Clone(ITravelLog **pptl);
virtual DWORD STDMETHODCALLTYPE CountEntries(IUnknown *punk);
virtual HRESULT STDMETHODCALLTYPE Revert();
BEGIN_COM_MAP(CTravelLog)
COM_INTERFACE_ENTRY_IID(IID_ITravelLog, ITravelLog)
COM_INTERFACE_ENTRY_IID(IID_ITravelLog, ITravelLog)
END_COM_MAP()
};
CTravelEntry::CTravelEntry()
{
fNextEntry = NULL;
fPreviousEntry = NULL;
fPIDL = NULL;
fPersistState = NULL;
fNextEntry = NULL;
fPreviousEntry = NULL;
fPIDL = NULL;
fPersistState = NULL;
}
CTravelEntry::~CTravelEntry()
{
ILFree(fPIDL);
GlobalFree(fPersistState);
ILFree(fPIDL);
GlobalFree(fPersistState);
}
HRESULT CTravelEntry::GetToolTipText(IUnknown *punk, LPWSTR pwzText) const
{
HRESULT hResult;
HRESULT hResult;
hResult = ILGetDisplayNameEx(NULL, fPIDL, pwzText, ILGDN_NORMAL);
if (FAILED(hResult))
return hResult;
return S_OK;
hResult = ILGetDisplayNameEx(NULL, fPIDL, pwzText, ILGDN_NORMAL);
if (FAILED(hResult))
return hResult;
return S_OK;
}
long CTravelEntry::GetSize() const
{
return 0;
return 0;
}
HRESULT STDMETHODCALLTYPE CTravelEntry::Invoke(IUnknown *punk)
{
CComPtr<IPersistHistory> persistHistory;
CComPtr<IStream> globalStream;
HRESULT hResult;
CComPtr<IPersistHistory> persistHistory;
CComPtr<IStream> globalStream;
HRESULT hResult;
hResult = punk->QueryInterface(IID_IPersistHistory, reinterpret_cast<void **>(&persistHistory));
if (FAILED(hResult))
return hResult;
hResult = CreateStreamOnHGlobal(fPersistState, FALSE, &globalStream);
if (FAILED(hResult))
return hResult;
hResult = persistHistory->LoadHistory(globalStream, NULL);
if (FAILED(hResult))
return hResult;
return S_OK;
hResult = punk->QueryInterface(IID_IPersistHistory, reinterpret_cast<void **>(&persistHistory));
if (FAILED(hResult))
return hResult;
hResult = CreateStreamOnHGlobal(fPersistState, FALSE, &globalStream);
if (FAILED(hResult))
return hResult;
hResult = persistHistory->LoadHistory(globalStream, NULL);
if (FAILED(hResult))
return hResult;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CTravelEntry::Update(IUnknown *punk, BOOL fIsLocalAnchor)
{
CComPtr<ITravelLogClient> travelLogClient;
CComPtr<IPersistHistory> persistHistory;
CComPtr<IStream> globalStream;
WINDOWDATA windowData;
HGLOBAL globalStorage;
HRESULT hResult;
CComPtr<ITravelLogClient> travelLogClient;
CComPtr<IPersistHistory> persistHistory;
CComPtr<IStream> globalStream;
WINDOWDATA windowData;
HGLOBAL globalStorage;
HRESULT hResult;
ILFree(fPIDL);
fPIDL = NULL;
GlobalFree(fPersistState);
fPersistState = NULL;
hResult = punk->QueryInterface(IID_ITravelLogClient, reinterpret_cast<void **>(&travelLogClient));
if (FAILED(hResult))
return hResult;
hResult = travelLogClient->GetWindowData(&windowData);
if (FAILED(hResult))
return hResult;
fPIDL = windowData.pidl;
// TODO: Properly free the windowData
hResult = punk->QueryInterface(IID_IPersistHistory, reinterpret_cast<void **>(&persistHistory));
if (FAILED(hResult))
return hResult;
globalStorage = GlobalAlloc(GMEM_FIXED, 0);
hResult = CreateStreamOnHGlobal(globalStorage, FALSE, &globalStream);
if (FAILED(hResult))
return hResult;
hResult = persistHistory->SaveHistory(globalStream);
if (FAILED(hResult))
return hResult;
hResult = GetHGlobalFromStream(globalStream, &fPersistState);
if (FAILED(hResult))
return hResult;
return S_OK;
ILFree(fPIDL);
fPIDL = NULL;
GlobalFree(fPersistState);
fPersistState = NULL;
hResult = punk->QueryInterface(IID_ITravelLogClient, reinterpret_cast<void **>(&travelLogClient));
if (FAILED(hResult))
return hResult;
hResult = travelLogClient->GetWindowData(&windowData);
if (FAILED(hResult))
return hResult;
fPIDL = windowData.pidl;
// TODO: Properly free the windowData
hResult = punk->QueryInterface(IID_IPersistHistory, reinterpret_cast<void **>(&persistHistory));
if (FAILED(hResult))
return hResult;
globalStorage = GlobalAlloc(GMEM_FIXED, 0);
hResult = CreateStreamOnHGlobal(globalStorage, FALSE, &globalStream);
if (FAILED(hResult))
return hResult;
hResult = persistHistory->SaveHistory(globalStream);
if (FAILED(hResult))
return hResult;
hResult = GetHGlobalFromStream(globalStream, &fPersistState);
if (FAILED(hResult))
return hResult;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CTravelEntry::GetPidl(LPITEMIDLIST *ppidl)
{
if (ppidl == NULL)
return E_POINTER;
*ppidl = ILClone(fPIDL);
if (*ppidl == NULL)
return E_OUTOFMEMORY;
return S_OK;
if (ppidl == NULL)
return E_POINTER;
*ppidl = ILClone(fPIDL);
if (*ppidl == NULL)
return E_OUTOFMEMORY;
return S_OK;
}
CTravelLog::CTravelLog()
{
fListHead = NULL;
fListTail = NULL;
fCurrentEntry = NULL;
fMaximumSize = 0;
fCurrentSize = 0;
fEntryCount = 0;
fListHead = NULL;
fListTail = NULL;
fCurrentEntry = NULL;
fMaximumSize = 0;
fCurrentSize = 0;
fEntryCount = 0;
}
CTravelLog::~CTravelLog()
{
CTravelEntry *anEntry;
CTravelEntry *next;
CTravelEntry *anEntry;
CTravelEntry *next;
anEntry = fListHead;
while (anEntry != NULL)
{
next = anEntry->fNextEntry;
anEntry->Release();
anEntry = next;
}
anEntry = fListHead;
while (anEntry != NULL)
{
next = anEntry->fNextEntry;
anEntry->Release();
anEntry = next;
}
}
HRESULT CTravelLog::Initialize()
{
fMaximumSize = 1024 * 1024; // TODO: change to read this from registry
// Software\Microsoft\Windows\CurrentVersion\Explorer\TravelLog
// MaxSize
return S_OK;
fMaximumSize = 1024 * 1024; // TODO: change to read this from registry
// Software\Microsoft\Windows\CurrentVersion\Explorer\TravelLog
// MaxSize
return S_OK;
}
HRESULT CTravelLog::FindRelativeEntry(int offset, CTravelEntry **foundEntry)
{
CTravelEntry *curEntry;
CTravelEntry *curEntry;
*foundEntry = NULL;
curEntry = fCurrentEntry;
if (offset < 0)
{
while (offset < 0 && curEntry != NULL)
{
curEntry = curEntry->fPreviousEntry;
offset++;
}
}
else
{
while (offset > 0 && curEntry != NULL)
{
curEntry = curEntry->fNextEntry;
offset--;
}
}
if (curEntry == NULL)
return E_INVALIDARG;
*foundEntry = curEntry;
return S_OK;
*foundEntry = NULL;
curEntry = fCurrentEntry;
if (offset < 0)
{
while (offset < 0 && curEntry != NULL)
{
curEntry = curEntry->fPreviousEntry;
offset++;
}
}
else
{
while (offset > 0 && curEntry != NULL)
{
curEntry = curEntry->fNextEntry;
offset--;
}
}
if (curEntry == NULL)
return E_INVALIDARG;
*foundEntry = curEntry;
return S_OK;
}
void CTravelLog::DeleteChain(CTravelEntry *startHere)
{
CTravelEntry *saveNext;
long itemSize;
CTravelEntry *saveNext;
long itemSize;
if (startHere->fPreviousEntry != NULL)
{
startHere->fPreviousEntry->fNextEntry = NULL;
fListTail = startHere->fPreviousEntry;
}
else
{
fListHead = NULL;
fListTail = NULL;
}
while (startHere != NULL)
{
saveNext = startHere->fNextEntry;
itemSize = startHere->GetSize();
fCurrentSize -= itemSize;
startHere->Release();
startHere = saveNext;
fEntryCount--;
}
if (startHere->fPreviousEntry != NULL)
{
startHere->fPreviousEntry->fNextEntry = NULL;
fListTail = startHere->fPreviousEntry;
}
else
{
fListHead = NULL;
fListTail = NULL;
}
while (startHere != NULL)
{
saveNext = startHere->fNextEntry;
itemSize = startHere->GetSize();
fCurrentSize -= itemSize;
startHere->Release();
startHere = saveNext;
fEntryCount--;
}
}
void CTravelLog::AppendEntry(CTravelEntry *afterEntry, CTravelEntry *newEntry)
{
if (afterEntry == NULL)
{
fListHead = newEntry;
fListTail = newEntry;
}
else
{
newEntry->fNextEntry = afterEntry->fNextEntry;
afterEntry->fNextEntry = newEntry;
newEntry->fPreviousEntry = afterEntry;
if (newEntry->fNextEntry == NULL)
fListTail = newEntry;
else
newEntry->fNextEntry->fPreviousEntry = newEntry;
}
fEntryCount++;
if (afterEntry == NULL)
{
fListHead = newEntry;
fListTail = newEntry;
}
else
{
newEntry->fNextEntry = afterEntry->fNextEntry;
afterEntry->fNextEntry = newEntry;
newEntry->fPreviousEntry = afterEntry;
if (newEntry->fNextEntry == NULL)
fListTail = newEntry;
else
newEntry->fNextEntry->fPreviousEntry = newEntry;
}
fEntryCount++;
}
HRESULT STDMETHODCALLTYPE CTravelLog::AddEntry(IUnknown *punk, BOOL fIsLocalAnchor)
{
CComObject<CTravelEntry> *newEntry;
long itemSize;
CComObject<CTravelEntry> *newEntry;
long itemSize;
if (punk == NULL)
return E_INVALIDARG;
ATLTRY (newEntry = new CComObject<CTravelEntry>);
if (newEntry == NULL)
return E_OUTOFMEMORY;
newEntry->AddRef();
if (fCurrentEntry != NULL && fCurrentEntry->fNextEntry != NULL)
DeleteChain(fCurrentEntry->fNextEntry);
AppendEntry(fCurrentEntry, newEntry);
itemSize = newEntry->GetSize();
fCurrentSize += itemSize;
fCurrentEntry = newEntry;
return S_OK;
if (punk == NULL)
return E_INVALIDARG;
ATLTRY (newEntry = new CComObject<CTravelEntry>);
if (newEntry == NULL)
return E_OUTOFMEMORY;
newEntry->AddRef();
if (fCurrentEntry != NULL && fCurrentEntry->fNextEntry != NULL)
DeleteChain(fCurrentEntry->fNextEntry);
AppendEntry(fCurrentEntry, newEntry);
itemSize = newEntry->GetSize();
fCurrentSize += itemSize;
fCurrentEntry = newEntry;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CTravelLog::UpdateEntry(IUnknown *punk, BOOL fIsLocalAnchor)
{
if (punk == NULL)
return E_INVALIDARG;
if (fCurrentEntry == NULL)
return E_UNEXPECTED;
return fCurrentEntry->Update(punk, fIsLocalAnchor);
if (punk == NULL)
return E_INVALIDARG;
if (fCurrentEntry == NULL)
return E_UNEXPECTED;
return fCurrentEntry->Update(punk, fIsLocalAnchor);
}
HRESULT STDMETHODCALLTYPE CTravelLog::UpdateExternal(IUnknown *punk, IUnknown *punkHLBrowseContext)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CTravelLog::Travel(IUnknown *punk, int iOffset)
{
CTravelEntry *destinationEntry;
HRESULT hResult;
hResult = FindRelativeEntry(iOffset, &destinationEntry);
if (FAILED(hResult))
return hResult;
fCurrentEntry = destinationEntry;
hResult = destinationEntry->Invoke(punk);
if (FAILED(hResult))
return hResult;
return S_OK;
CTravelEntry *destinationEntry;
HRESULT hResult;
hResult = FindRelativeEntry(iOffset, &destinationEntry);
if (FAILED(hResult))
return hResult;
fCurrentEntry = destinationEntry;
hResult = destinationEntry->Invoke(punk);
if (FAILED(hResult))
return hResult;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CTravelLog::GetTravelEntry(IUnknown *punk, int iOffset, ITravelEntry **ppte)
{
CTravelEntry *destinationEntry;
HRESULT hResult;
hResult = FindRelativeEntry(iOffset, &destinationEntry);
if (FAILED(hResult))
return hResult;
return destinationEntry->QueryInterface(IID_ITravelEntry, reinterpret_cast<void **>(ppte));
CTravelEntry *destinationEntry;
HRESULT hResult;
hResult = FindRelativeEntry(iOffset, &destinationEntry);
if (FAILED(hResult))
return hResult;
return destinationEntry->QueryInterface(IID_ITravelEntry, reinterpret_cast<void **>(ppte));
}
HRESULT STDMETHODCALLTYPE CTravelLog::FindTravelEntry(IUnknown *punk, LPCITEMIDLIST pidl, ITravelEntry **ppte)
{
if (ppte == NULL)
return E_POINTER;
if (punk == NULL || pidl == NULL)
return E_INVALIDARG;
return E_NOTIMPL;
if (ppte == NULL)
return E_POINTER;
if (punk == NULL || pidl == NULL)
return E_INVALIDARG;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CTravelLog::GetToolTipText(IUnknown *punk, int iOffset, int idsTemplate, LPWSTR pwzText, DWORD cchText)
{
CTravelEntry *destinationEntry;
wchar_t tempString[MAX_PATH];
wchar_t templateString[200];
HRESULT hResult;
if (pwzText == NULL)
return E_POINTER;
if (punk == NULL || cchText == 0)
return E_INVALIDARG;
hResult = FindRelativeEntry(iOffset, &destinationEntry);
if (FAILED(hResult))
return hResult;
hResult = destinationEntry->GetToolTipText(punk, tempString);
if (FAILED(hResult))
return hResult;
if (iOffset < 0)
{
wcscpy(templateString, L"Back to %s");
}
else
{
wcscpy(templateString, L"Forward to %s");
}
_snwprintf(pwzText, cchText, templateString, tempString);
return S_OK;
CTravelEntry *destinationEntry;
wchar_t tempString[MAX_PATH];
wchar_t templateString[200];
HRESULT hResult;
if (pwzText == NULL)
return E_POINTER;
if (punk == NULL || cchText == 0)
return E_INVALIDARG;
hResult = FindRelativeEntry(iOffset, &destinationEntry);
if (FAILED(hResult))
return hResult;
hResult = destinationEntry->GetToolTipText(punk, tempString);
if (FAILED(hResult))
return hResult;
if (iOffset < 0)
{
wcscpy(templateString, L"Back to %s");
}
else
{
wcscpy(templateString, L"Forward to %s");
}
_snwprintf(pwzText, cchText, templateString, tempString);
return S_OK;
}
static void FixAmpersands(wchar_t *buffer)
{
wchar_t tempBuffer[MAX_PATH * 2];
wchar_t ch;
wchar_t *srcPtr;
wchar_t *dstPtr;
wchar_t tempBuffer[MAX_PATH * 2];
wchar_t ch;
wchar_t *srcPtr;
wchar_t *dstPtr;
srcPtr = buffer;
dstPtr = tempBuffer;
while (*srcPtr != 0)
{
ch = *srcPtr++;
*dstPtr++ = ch;
if (ch == '&')
*dstPtr++ = '&';
}
*dstPtr = 0;
wcscpy(buffer, tempBuffer);
srcPtr = buffer;
dstPtr = tempBuffer;
while (*srcPtr != 0)
{
ch = *srcPtr++;
*dstPtr++ = ch;
if (ch == '&')
*dstPtr++ = '&';
}
*dstPtr = 0;
wcscpy(buffer, tempBuffer);
}
HRESULT STDMETHODCALLTYPE CTravelLog::InsertMenuEntries(IUnknown *punk, HMENU hmenu,
int nPos, int idFirst, int idLast, DWORD dwFlags)
int nPos, int idFirst, int idLast, DWORD dwFlags)
{
CTravelEntry *currentItem;
MENUITEMINFO menuItemInfo;
wchar_t itemTextBuffer[MAX_PATH * 2];
HRESULT hResult;
CTravelEntry *currentItem;
MENUITEMINFO menuItemInfo;
wchar_t itemTextBuffer[MAX_PATH * 2];
HRESULT hResult;
// TLMENUF_BACK - include back entries
// TLMENUF_INCLUDECURRENT - include current entry, if TLMENUF_CHECKCURRENT then check the entry
// TLMENUF_FORE - include next entries
// if fore+back, list from oldest to newest
// if back, list from newest to oldest
// if fore, list from newest to oldest
// TLMENUF_BACK - include back entries
// TLMENUF_INCLUDECURRENT - include current entry, if TLMENUF_CHECKCURRENT then check the entry
// TLMENUF_FORE - include next entries
// if fore+back, list from oldest to newest
// if back, list from newest to oldest
// if fore, list from newest to oldest
// don't forget to patch ampersands before adding to menu
if (punk == NULL)
return E_INVALIDARG;
if (idLast <= idFirst)
return E_INVALIDARG;
menuItemInfo.cbSize = sizeof(menuItemInfo);
menuItemInfo.fMask = MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING;
menuItemInfo.fType = MFT_STRING;
menuItemInfo.wID = idFirst;
menuItemInfo.fState = MFS_ENABLED;
menuItemInfo.dwTypeData = itemTextBuffer;
if ((dwFlags & TLMENUF_BACK) != 0)
{
if ((dwFlags & TLMENUF_FORE) != 0)
{
currentItem = fCurrentEntry;
if (currentItem != NULL)
{
while (currentItem->fPreviousEntry != NULL)
currentItem = currentItem->fPreviousEntry;
}
while (currentItem != fCurrentEntry)
{
hResult = currentItem->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
}
currentItem = currentItem->fNextEntry;
}
}
else
{
currentItem = fCurrentEntry;
if (currentItem != NULL)
currentItem = currentItem->fPreviousEntry;
while (currentItem != NULL)
{
hResult = currentItem->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
}
currentItem = currentItem->fPreviousEntry;
}
}
}
if ((dwFlags & TLMENUF_INCLUDECURRENT) != 0)
{
if (fCurrentEntry != NULL)
{
hResult = fCurrentEntry->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if ((dwFlags & TLMENUF_CHECKCURRENT) != 0)
menuItemInfo.fState |= MFS_CHECKED;
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
menuItemInfo.fState &= ~MFS_CHECKED;
}
}
}
if ((dwFlags & TLMENUF_FORE) != 0)
{
currentItem = fCurrentEntry;
if (currentItem != NULL)
currentItem = currentItem->fNextEntry;
while (currentItem != NULL)
{
hResult = currentItem->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
}
currentItem = currentItem->fNextEntry;
}
}
return S_OK;
// don't forget to patch ampersands before adding to menu
if (punk == NULL)
return E_INVALIDARG;
if (idLast <= idFirst)
return E_INVALIDARG;
menuItemInfo.cbSize = sizeof(menuItemInfo);
menuItemInfo.fMask = MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING;
menuItemInfo.fType = MFT_STRING;
menuItemInfo.wID = idFirst;
menuItemInfo.fState = MFS_ENABLED;
menuItemInfo.dwTypeData = itemTextBuffer;
if ((dwFlags & TLMENUF_BACK) != 0)
{
if ((dwFlags & TLMENUF_FORE) != 0)
{
currentItem = fCurrentEntry;
if (currentItem != NULL)
{
while (currentItem->fPreviousEntry != NULL)
currentItem = currentItem->fPreviousEntry;
}
while (currentItem != fCurrentEntry)
{
hResult = currentItem->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
}
currentItem = currentItem->fNextEntry;
}
}
else
{
currentItem = fCurrentEntry;
if (currentItem != NULL)
currentItem = currentItem->fPreviousEntry;
while (currentItem != NULL)
{
hResult = currentItem->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
}
currentItem = currentItem->fPreviousEntry;
}
}
}
if ((dwFlags & TLMENUF_INCLUDECURRENT) != 0)
{
if (fCurrentEntry != NULL)
{
hResult = fCurrentEntry->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if ((dwFlags & TLMENUF_CHECKCURRENT) != 0)
menuItemInfo.fState |= MFS_CHECKED;
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
menuItemInfo.fState &= ~MFS_CHECKED;
}
}
}
if ((dwFlags & TLMENUF_FORE) != 0)
{
currentItem = fCurrentEntry;
if (currentItem != NULL)
currentItem = currentItem->fNextEntry;
while (currentItem != NULL)
{
hResult = currentItem->GetToolTipText(punk, itemTextBuffer);
if (SUCCEEDED(hResult))
{
FixAmpersands(itemTextBuffer);
if (InsertMenuItem(hmenu, nPos, TRUE, &menuItemInfo))
{
nPos++;
menuItemInfo.wID++;
}
}
currentItem = currentItem->fNextEntry;
}
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CTravelLog::Clone(ITravelLog **pptl)
{
if (pptl == NULL)
return E_POINTER;
*pptl = NULL;
// duplicate the log
return E_NOTIMPL;
if (pptl == NULL)
return E_POINTER;
*pptl = NULL;
// duplicate the log
return E_NOTIMPL;
}
DWORD STDMETHODCALLTYPE CTravelLog::CountEntries(IUnknown *punk)
{
if (punk == NULL)
return E_INVALIDARG;
return fEntryCount;
if (punk == NULL)
return E_INVALIDARG;
return fEntryCount;
}
HRESULT STDMETHODCALLTYPE CTravelLog::Revert()
{
// remove the current entry?
return E_NOTIMPL;
// remove the current entry?
return E_NOTIMPL;
}
HRESULT CreateTravelLog(REFIID riid, void **ppv)
{
CComObject<CTravelLog> *theTravelLog;
HRESULT hResult;
CComObject<CTravelLog> *theTravelLog;
HRESULT hResult;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theTravelLog = new CComObject<CTravelLog>);
if (theTravelLog == NULL)
return E_OUTOFMEMORY;
hResult = theTravelLog->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theTravelLog;
return hResult;
}
hResult = theTravelLog->Initialize();
if (FAILED(hResult))
return hResult;
return S_OK;
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;
ATLTRY (theTravelLog = new CComObject<CTravelLog>);
if (theTravelLog == NULL)
return E_OUTOFMEMORY;
hResult = theTravelLog->QueryInterface(riid, reinterpret_cast<void **>(ppv));
if (FAILED(hResult))
{
delete theTravelLog;
return hResult;
}
hResult = theTravelLog->Initialize();
if (FAILED(hResult))
return hResult;
return S_OK;
}

View file

@ -3,11 +3,11 @@
void *operator new(size_t size)
{
return LocalAlloc(LMEM_ZEROINIT, size);
return LocalAlloc(LMEM_ZEROINIT, size);
}
void operator delete(void *p)
{
LocalFree(p);
LocalFree(p);
}