Jacek Caban : hlink: Added HlinkResolveMonikerForData implementation.

Alexandre Julliard julliard at winehq.org
Mon Feb 4 08:42:51 CST 2008


Module: wine
Branch: master
Commit: 9d6cf488b60e0ce55a46c1560af6bff8be4dc849
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9d6cf488b60e0ce55a46c1560af6bff8be4dc849

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Jan 29 00:22:12 2008 +0100

hlink: Added HlinkResolveMonikerForData implementation.

---

 dlls/hlink/hlink.spec   |    2 +-
 dlls/hlink/hlink_main.c |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/dlls/hlink/hlink.spec b/dlls/hlink/hlink.spec
index 117327b..0cc761f 100644
--- a/dlls/hlink/hlink.spec
+++ b/dlls/hlink/hlink.spec
@@ -8,7 +8,7 @@
 10 stdcall HlinkNavigate(ptr ptr long ptr ptr ptr)
 11 stdcall HlinkUpdateStackItem(ptr ptr long ptr wstr wstr)
 12 stub HlinkOnRenameDocument
-14 stub HlinkResolveMonikerForData
+14 stdcall HlinkResolveMonikerForData(ptr long ptr long ptr ptr ptr)
 15 stub HlinkResolveStringForData
 16 stub OleSaveToStreamEx
 18 stdcall HlinkParseDisplayName(ptr wstr long ptr ptr)
diff --git a/dlls/hlink/hlink_main.c b/dlls/hlink/hlink_main.c
index b9ce4af..ed8d60f 100644
--- a/dlls/hlink/hlink_main.c
+++ b/dlls/hlink/hlink_main.c
@@ -347,6 +347,39 @@ HRESULT WINAPI HlinkParseDisplayName(LPBC pibc, LPCWSTR pwzDisplayName, BOOL fNo
     return hres;
 }
 
+HRESULT WINAPI HlinkResolveMonikerForData(LPMONIKER pimkReference, DWORD reserved, LPBC pibc,
+        ULONG cFmtetc, FORMATETC *rgFmtetc, IBindStatusCallback *pibsc, LPMONIKER pimkBase)
+{
+    LPOLESTR name = NULL;
+    IBindCtx *bctx;
+    DWORD mksys = 0;
+    void *obj = NULL;
+    HRESULT hres;
+
+    TRACE("(%p %x %p %d %p %p %p)\n", pimkReference, reserved, pibc, cFmtetc, rgFmtetc, pibsc, pimkBase);
+
+    if(cFmtetc || rgFmtetc || pimkBase)
+        FIXME("Unsupported args\n");
+
+    hres = RegisterBindStatusCallback(pibc, pibsc, NULL /* FIXME */, 0);
+    if(FAILED(hres))
+        return hres;
+
+    hres = IMoniker_IsSystemMoniker(pimkReference, &mksys);
+    if(SUCCEEDED(hres) && mksys != MKSYS_URLMONIKER)
+        WARN("sysmk = %x\n", mksys);
+
+    /* FIXME: What is it for? */
+    CreateBindCtx(0, &bctx);
+    hres = IMoniker_GetDisplayName(pimkReference, bctx, NULL, &name);
+    IBindCtx_Release(bctx);
+    if(SUCCEEDED(hres)) {
+        TRACE("got display name %s\n", debugstr_w(name));
+        CoTaskMemFree(name);
+    }
+
+    return IMoniker_BindToStorage(pimkReference, pibc, NULL, &IID_IUnknown, &obj);
+}
 static HRESULT WINAPI HLinkCF_fnQueryInterface ( LPCLASSFACTORY iface,
         REFIID riid, LPVOID *ppvObj)
 {




More information about the wine-cvs mailing list