Jacek Caban : shdocvw: Added DISPID_AMBIENT_OFFLINEIFNOTCONNECTED and DISPID_AMBIENT_SILENT implementation in DocHost ::Invoke.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 9 15:47:41 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Mar  9 16:49:21 2007 +0100

shdocvw: Added DISPID_AMBIENT_OFFLINEIFNOTCONNECTED and DISPID_AMBIENT_SILENT implementation in DocHost::Invoke.

---

 dlls/shdocvw/client.c |   41 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/dlls/shdocvw/client.c b/dlls/shdocvw/client.c
index 873c255..c2d71cf 100644
--- a/dlls/shdocvw/client.c
+++ b/dlls/shdocvw/client.c
@@ -16,8 +16,12 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include <stdio.h>
+
 #include "wine/debug.h"
 #include "shdocvw.h"
+#include "mshtmdid.h"
+#include "idispids.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
 
@@ -400,13 +404,46 @@ static HRESULT WINAPI ClDispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LP
     return E_NOTIMPL;
 }
 
+static const char *debugstr_dispid(DISPID dispid)
+{
+    static char buf[16];
+
+#define CASE_DISPID(did) case did: return #did
+    switch(dispid) {
+        CASE_DISPID(DISPID_AMBIENT_USERMODE);
+        CASE_DISPID(DISPID_AMBIENT_DLCONTROL);
+        CASE_DISPID(DISPID_AMBIENT_USERAGENT);
+        CASE_DISPID(DISPID_AMBIENT_PALETTE);
+        CASE_DISPID(DISPID_AMBIENT_OFFLINEIFNOTCONNECTED);
+        CASE_DISPID(DISPID_AMBIENT_SILENT);
+    }
+#undef CASE_DISPID
+
+    sprintf(buf, "%d", dispid);
+    return buf;
+}
+
 static HRESULT WINAPI ClDispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REFIID riid,
                                         LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
                                         VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 {
     DocHost *This = DISP_THIS(iface);
-    FIXME("(%p)->(%d %s %d %04x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
-          lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+
+    TRACE("(%p)->(%s %s %d %04x %p %p %p %p)\n", This, debugstr_dispid(dispIdMember),
+          debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+
+    switch(dispIdMember) {
+    case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED:
+        V_VT(pVarResult) = VT_BOOL;
+        V_BOOL(pVarResult) = This->offline;
+        return S_OK;
+    case DISPID_AMBIENT_SILENT:
+        V_VT(pVarResult) = VT_BOOL;
+        V_BOOL(pVarResult) = This->offline;
+        return S_OK;
+    }
+
+    FIXME("unhandled dispid %d\n", dispIdMember);
     return E_NOTIMPL;
 }
 




More information about the wine-cvs mailing list