From 7013f068f37c0e1482f7474c024cd2775d8bac02 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 14 Sep 2021 11:47:55 +0300 Subject: [PATCH] ole32: Implement ParseDisplayName() for class moniker. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/ole32/classmoniker.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/dlls/ole32/classmoniker.c b/dlls/ole32/classmoniker.c index 4872014a508..ac4854347c8 100644 --- a/dlls/ole32/classmoniker.c +++ b/dlls/ole32/classmoniker.c @@ -512,18 +512,21 @@ static HRESULT WINAPI ClassMoniker_GetDisplayName(IMoniker *iface, return S_OK; } -/****************************************************************************** - * ClassMoniker_ParseDisplayName - ******************************************************************************/ -static HRESULT WINAPI ClassMoniker_ParseDisplayName(IMoniker* iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - LPOLESTR pszDisplayName, - ULONG* pchEaten, - IMoniker** ppmkOut) +static HRESULT WINAPI ClassMoniker_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, LPOLESTR display_name, ULONG *eaten, IMoniker **result) { - FIXME("(%p, %p, %s, %p, %p)\n", pbc, pmkToLeft, debugstr_w(pszDisplayName), pchEaten, ppmkOut); - return E_NOTIMPL; + IParseDisplayName *parser; + HRESULT hr; + + TRACE("%p, %p, %p, %s, %p, %p\n", iface, pbc, pmkToLeft, debugstr_w(display_name), eaten, result); + + if (SUCCEEDED(hr = IMoniker_BindToObject(iface, pbc, pmkToLeft, &IID_IParseDisplayName, (void **)&parser))) + { + hr = IParseDisplayName_ParseDisplayName(parser, pbc, display_name, eaten, result); + IParseDisplayName_Release(parser); + } + + return hr; } /******************************************************************************