mirror of
https://github.com/reactos/reactos.git
synced 2024-07-02 18:54:25 +00:00
[BROWSEUI:FORMATTING]
- Use spaces instead of tabs svn path=/trunk/; revision=58878
This commit is contained in:
parent
d0ad4929d7
commit
f2139d0242
|
@ -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++)
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
|
@ -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
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue