]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/ole/activex.cpp
Get the page title from the IHtmlDocument rather than the bowser as it actually retur...
[wxWidgets.git] / src / msw / ole / activex.cpp
index 92a5a1186b892bcacaa3dcaa67c81f5a6de38a74..71bbed04508a21acff9a1c54d5cf5fa5801423d0 100644 (file)
@@ -54,7 +54,7 @@ wxDEFINE_EVENT( wxEVT_ACTIVEX, wxActiveXEvent );
     {\
         public:\
         LONG l;\
-        TAutoInitInt() : l(0) {}\
+        TAutoInitInt() : l(1) {}\
     };\
     TAutoInitInt refCount, lockCount;\
     static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc);\
@@ -1020,14 +1020,25 @@ void wxActiveXContainer::CreateActiveX(REFIID iid, IUnknown* pUnk)
 
                 HRESULT hret =
                     cpContainer->FindConnectionPoint(ta->guid, cp.GetRef());
-                CHECK_HR(hret);
+
+                // Notice that the return value of CONNECT_E_NOCONNECTION is
+                // expected if the interface doesn't support connection points.
+                if ( hret != CONNECT_E_NOCONNECTION )
+                {
+                    CHECK_HR(hret);
+                }
 
                 if ( cp )
                 {
-                    IDispatch* disp;
-                    m_frameSite->QueryInterface(IID_IDispatch, (void**)&disp);
-                    hret = cp->Advise(new wxActiveXEvents(this, ta->guid),
-                                      &adviseCookie);
+                    wxActiveXEvents * const
+                        events = new wxActiveXEvents(this, ta->guid);
+                    hret = cp->Advise(events, &adviseCookie);
+
+                    // We don't need this object any more and cp will keep a
+                    // reference to it if it needs it, i.e. if Advise()
+                    // succeeded.
+                    events->Release();
+
                     CHECK_HR(hret);
                 }
             }