shell32: Add IShellBrowser stub.
This commit is contained in:
parent
19979df965
commit
1efc54088b
|
@ -35,6 +35,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||||
|
|
||||||
typedef struct _ExplorerBrowserImpl {
|
typedef struct _ExplorerBrowserImpl {
|
||||||
const IExplorerBrowserVtbl *lpVtbl;
|
const IExplorerBrowserVtbl *lpVtbl;
|
||||||
|
const IShellBrowserVtbl *lpsbVtbl;
|
||||||
LONG ref;
|
LONG ref;
|
||||||
BOOL destroyed;
|
BOOL destroyed;
|
||||||
} ExplorerBrowserImpl;
|
} ExplorerBrowserImpl;
|
||||||
|
@ -54,6 +55,10 @@ static HRESULT WINAPI IExplorerBrowser_fnQueryInterface(IExplorerBrowser *iface,
|
||||||
{
|
{
|
||||||
*ppvObject = This;
|
*ppvObject = This;
|
||||||
}
|
}
|
||||||
|
else if(IsEqualIID(riid, &IID_IShellBrowser))
|
||||||
|
{
|
||||||
|
*ppvObject = &This->lpsbVtbl;
|
||||||
|
}
|
||||||
|
|
||||||
if(*ppvObject)
|
if(*ppvObject)
|
||||||
{
|
{
|
||||||
|
@ -255,6 +260,204 @@ static const IExplorerBrowserVtbl vt_IExplorerBrowser =
|
||||||
IExplorerBrowser_fnGetCurrentView
|
IExplorerBrowser_fnGetCurrentView
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* IShellBrowser Implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline ExplorerBrowserImpl *impl_from_IShellBrowser(IShellBrowser *iface)
|
||||||
|
{
|
||||||
|
return (ExplorerBrowserImpl *)((char*)iface - FIELD_OFFSET(ExplorerBrowserImpl, lpsbVtbl));
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnQueryInterface(IShellBrowser *iface,
|
||||||
|
REFIID riid, void **ppvObject)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p\n", This);
|
||||||
|
return IUnknown_QueryInterface((IUnknown*) This, riid, ppvObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI IShellBrowser_fnAddRef(IShellBrowser *iface)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p\n", This);
|
||||||
|
return IUnknown_AddRef((IUnknown*) This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI IShellBrowser_fnRelease(IShellBrowser *iface)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p\n", This);
|
||||||
|
return IUnknown_Release((IUnknown*) This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnGetWindow(IShellBrowser *iface, HWND *phwnd)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%p)\n", This, phwnd);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnContextSensitiveHelp(IShellBrowser *iface,
|
||||||
|
BOOL fEnterMode)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%d)\n", This, fEnterMode);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnInsertMenusSB(IShellBrowser *iface,
|
||||||
|
HMENU hmenuShared,
|
||||||
|
LPOLEMENUGROUPWIDTHS lpMenuWidths)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p (%p, %p)\n", This, hmenuShared, lpMenuWidths);
|
||||||
|
|
||||||
|
/* Not implemented. */
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnSetMenuSB(IShellBrowser *iface,
|
||||||
|
HMENU hmenuShared,
|
||||||
|
HOLEMENU holemenuReserved,
|
||||||
|
HWND hwndActiveObject)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p (%p, %p, %p)\n", This, hmenuShared, holemenuReserved, hwndActiveObject);
|
||||||
|
|
||||||
|
/* Not implemented. */
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnRemoveMenusSB(IShellBrowser *iface,
|
||||||
|
HMENU hmenuShared)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p (%p)\n", This, hmenuShared);
|
||||||
|
|
||||||
|
/* Not implemented. */
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnSetStatusTextSB(IShellBrowser *iface,
|
||||||
|
LPCOLESTR pszStatusText)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%s)\n", This, debugstr_w(pszStatusText));
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnEnableModelessSB(IShellBrowser *iface,
|
||||||
|
BOOL fEnable)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%d)\n", This, fEnable);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnTranslateAcceleratorSB(IShellBrowser *iface,
|
||||||
|
MSG *pmsg, WORD wID)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%p, 0x%x)\n", This, pmsg, wID);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnBrowseObject(IShellBrowser *iface,
|
||||||
|
LPCITEMIDLIST pidl, UINT wFlags)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p\n", This);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnGetViewStateStream(IShellBrowser *iface,
|
||||||
|
DWORD grfMode,
|
||||||
|
IStream **ppStrm)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (0x%x, %p)\n", This, grfMode, ppStrm);
|
||||||
|
|
||||||
|
*ppStrm = NULL;
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnGetControlWindow(IShellBrowser *iface,
|
||||||
|
UINT id, HWND *phwnd)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
TRACE("%p (%d, %p)\n", This, id, phwnd);
|
||||||
|
|
||||||
|
/* Not implemented. */
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnSendControlMsg(IShellBrowser *iface,
|
||||||
|
UINT id, UINT uMsg,
|
||||||
|
WPARAM wParam, LPARAM lParam,
|
||||||
|
LRESULT *pret)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%d, %d, %lx, %lx, %p)\n", This, id, uMsg, wParam, lParam, pret);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnQueryActiveShellView(IShellBrowser *iface,
|
||||||
|
IShellView **ppshv)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%p)\n", This, ppshv);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnOnViewWindowActive(IShellBrowser *iface,
|
||||||
|
IShellView *pshv)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%p)\n", This, pshv);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IShellBrowser_fnSetToolbarItems(IShellBrowser *iface,
|
||||||
|
LPTBBUTTONSB lpButtons,
|
||||||
|
UINT nButtons, UINT uFlags)
|
||||||
|
{
|
||||||
|
ExplorerBrowserImpl *This = impl_from_IShellBrowser(iface);
|
||||||
|
FIXME("stub, %p (%p, %d, 0x%x)\n", This, lpButtons, nButtons, uFlags);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IShellBrowserVtbl vt_IShellBrowser = {
|
||||||
|
IShellBrowser_fnQueryInterface,
|
||||||
|
IShellBrowser_fnAddRef,
|
||||||
|
IShellBrowser_fnRelease,
|
||||||
|
IShellBrowser_fnGetWindow,
|
||||||
|
IShellBrowser_fnContextSensitiveHelp,
|
||||||
|
IShellBrowser_fnInsertMenusSB,
|
||||||
|
IShellBrowser_fnSetMenuSB,
|
||||||
|
IShellBrowser_fnRemoveMenusSB,
|
||||||
|
IShellBrowser_fnSetStatusTextSB,
|
||||||
|
IShellBrowser_fnEnableModelessSB,
|
||||||
|
IShellBrowser_fnTranslateAcceleratorSB,
|
||||||
|
IShellBrowser_fnBrowseObject,
|
||||||
|
IShellBrowser_fnGetViewStateStream,
|
||||||
|
IShellBrowser_fnGetControlWindow,
|
||||||
|
IShellBrowser_fnSendControlMsg,
|
||||||
|
IShellBrowser_fnQueryActiveShellView,
|
||||||
|
IShellBrowser_fnOnViewWindowActive,
|
||||||
|
IShellBrowser_fnSetToolbarItems
|
||||||
|
};
|
||||||
|
|
||||||
HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv)
|
HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv)
|
||||||
{
|
{
|
||||||
ExplorerBrowserImpl *eb;
|
ExplorerBrowserImpl *eb;
|
||||||
|
@ -270,6 +473,7 @@ HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, voi
|
||||||
eb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ExplorerBrowserImpl));
|
eb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ExplorerBrowserImpl));
|
||||||
eb->ref = 1;
|
eb->ref = 1;
|
||||||
eb->lpVtbl = &vt_IExplorerBrowser;
|
eb->lpVtbl = &vt_IExplorerBrowser;
|
||||||
|
eb->lpsbVtbl = &vt_IShellBrowser;
|
||||||
|
|
||||||
ret = IExplorerBrowser_QueryInterface((IExplorerBrowser*)eb, riid, ppv);
|
ret = IExplorerBrowser_QueryInterface((IExplorerBrowser*)eb, riid, ppv);
|
||||||
IExplorerBrowser_Release((IExplorerBrowser*)eb);
|
IExplorerBrowser_Release((IExplorerBrowser*)eb);
|
||||||
|
|
|
@ -55,7 +55,7 @@ static void test_QueryInterface(void)
|
||||||
|
|
||||||
test_qinterface(IID_IUnknown, S_OK);
|
test_qinterface(IID_IUnknown, S_OK);
|
||||||
test_qinterface(IID_IExplorerBrowser, S_OK);
|
test_qinterface(IID_IExplorerBrowser, S_OK);
|
||||||
todo_wine test_qinterface(IID_IShellBrowser, S_OK);
|
test_qinterface(IID_IShellBrowser, S_OK);
|
||||||
todo_wine test_qinterface(IID_IOleWindow, S_OK);
|
todo_wine test_qinterface(IID_IOleWindow, S_OK);
|
||||||
todo_wine test_qinterface(IID_ICommDlgBrowser, S_OK);
|
todo_wine test_qinterface(IID_ICommDlgBrowser, S_OK);
|
||||||
todo_wine test_qinterface(IID_ICommDlgBrowser2, S_OK);
|
todo_wine test_qinterface(IID_ICommDlgBrowser2, S_OK);
|
||||||
|
@ -77,6 +77,58 @@ static void test_QueryInterface(void)
|
||||||
ok(lres == 0, "Got %d\n", lres);
|
ok(lres == 0, "Got %d\n", lres);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_SB_misc(void)
|
||||||
|
{
|
||||||
|
IExplorerBrowser *peb;
|
||||||
|
IShellBrowser *psb;
|
||||||
|
HRESULT hr;
|
||||||
|
HWND retHwnd;
|
||||||
|
LONG lres;
|
||||||
|
|
||||||
|
ebrowser_instantiate(&peb);
|
||||||
|
hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
|
||||||
|
ok(hr == S_OK, "Got 0x%08x\n", hr);
|
||||||
|
if(FAILED(hr))
|
||||||
|
{
|
||||||
|
skip("Failed to get IShellBrowser interface.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Some unimplemented methods */
|
||||||
|
retHwnd = (HWND)0xDEADBEEF;
|
||||||
|
hr = IShellBrowser_GetControlWindow(psb, FCW_TOOLBAR, &retHwnd);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
ok(retHwnd == (HWND)0xDEADBEEF, "HWND overwritten\n");
|
||||||
|
|
||||||
|
hr = IShellBrowser_GetControlWindow(psb, FCW_STATUS, &retHwnd);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
ok(retHwnd == (HWND)0xDEADBEEF, "HWND overwritten\n");
|
||||||
|
|
||||||
|
hr = IShellBrowser_GetControlWindow(psb, FCW_TREE, &retHwnd);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
ok(retHwnd == (HWND)0xDEADBEEF, "HWND overwritten\n");
|
||||||
|
|
||||||
|
hr = IShellBrowser_GetControlWindow(psb, FCW_PROGRESS, &retHwnd);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
ok(retHwnd == (HWND)0xDEADBEEF, "HWND overwritten\n");
|
||||||
|
|
||||||
|
/* ::InsertMenuSB */
|
||||||
|
hr = IShellBrowser_InsertMenusSB(psb, NULL, NULL);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
|
||||||
|
/* ::RemoveMenusSB */
|
||||||
|
hr = IShellBrowser_RemoveMenusSB(psb, NULL);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
|
||||||
|
/* ::SetMenuSB */
|
||||||
|
hr = IShellBrowser_SetMenuSB(psb, NULL, NULL, NULL);
|
||||||
|
ok(hr == E_NOTIMPL, "got (0x%08x)\n", hr);
|
||||||
|
|
||||||
|
IShellBrowser_Release(psb);
|
||||||
|
lres = IExplorerBrowser_Release(peb);
|
||||||
|
ok(lres == 0, "Got %d\n", lres);
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL test_instantiate_control(void)
|
static BOOL test_instantiate_control(void)
|
||||||
{
|
{
|
||||||
IExplorerBrowser *peb;
|
IExplorerBrowser *peb;
|
||||||
|
@ -103,6 +155,7 @@ START_TEST(ebrowser)
|
||||||
}
|
}
|
||||||
|
|
||||||
test_QueryInterface();
|
test_QueryInterface();
|
||||||
|
test_SB_misc();
|
||||||
|
|
||||||
OleUninitialize();
|
OleUninitialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue