static void advise_cp(IUnknown *unk, BOOL init) { IConnectionPointContainer *container; IConnectionPoint *point; HRESULT hres; static DWORD cookie = 100; hres = IUnknown_QueryInterface(unk, &IID_IConnectionPointContainer, (void**)&container); ok(hres == S_OK, "QueryInterface(IID_IConnectionPointContainer) failed: %08x\n", hres); if(FAILED(hres)) return; hres = IConnectionPointContainer_FindConnectionPoint(container, &DIID_DWebBrowserEvents2, &point); IConnectionPointContainer_Release(container); ok(hres == S_OK, "FindConnectionPoint failed: %08x\n", hres); if(FAILED(hres)) return; if(init) { hres = IConnectionPoint_Advise(point, (IUnknown*)&Dispatch, &cookie); ok(hres == S_OK, "Advise failed: %08x\n", hres); }else { hres = IConnectionPoint_Unadvise(point, cookie); ok(hres == S_OK, "Unadvise failed: %08x\n", hres); } IConnectionPoint_Release(point); }
static void test_ConnectionPoint(IOleObject *unk) { IConnectionPointContainer *container; IConnectionPoint *point; HRESULT hres; static DWORD dw = 100; hres = IOleObject_QueryInterface(unk, &IID_IConnectionPointContainer, (void**)&container); ok(hres == S_OK, "QueryInterface(IID_IConnectionPointContainer) failed: %08x\n", hres); if(FAILED(hres)) return; hres = IConnectionPointContainer_FindConnectionPoint(container, &IID__WMPOCXEvents, &point); IConnectionPointContainer_Release(container); ok(hres == S_OK, "FindConnectionPoint failed: %08x\n", hres); if(FAILED(hres)) return; hres = IConnectionPoint_Advise(point, (IUnknown*)&WMPOCXEvents, &dw); ok(hres == S_OK, "Advise failed: %08x\n", hres); ok(dw == 1, "dw=%d, expected 1\n", dw); hres = IConnectionPoint_Unadvise(point, dw); ok(hres == S_OK, "Unadvise failed: %08x\n", hres); IConnectionPoint_Release(point); }
/*********************************************************************** * AtlUnadvise [atl100.@] */ HRESULT WINAPI AtlUnadvise(IUnknown *pUnkCP, const IID *iid, DWORD dw) { IConnectionPointContainer *container; IConnectionPoint *cp; HRESULT hres; TRACE("%p %p %d\n", pUnkCP, iid, dw); hres = IUnknown_QueryInterface(pUnkCP, &IID_IConnectionPointContainer, (void**)&container); if(FAILED(hres)) return hres; hres = IConnectionPointContainer_FindConnectionPoint(container, iid, &cp); IConnectionPointContainer_Release(container); if(FAILED(hres)) return hres; hres = IConnectionPoint_Unadvise(cp, dw); IConnectionPoint_Release(cp); return hres; }
void php_com_object_enable_event_sink(php_com_dotnet_object *obj, int enable) { if (obj->sink_dispatch) { IConnectionPointContainer *cont; IConnectionPoint *point; if (SUCCEEDED(IDispatch_QueryInterface(V_DISPATCH(&obj->v), &IID_IConnectionPointContainer, (void**)&cont))) { if (SUCCEEDED(IConnectionPointContainer_FindConnectionPoint(cont, &obj->sink_id, &point))) { if (enable) { IConnectionPoint_Advise(point, (IUnknown*)obj->sink_dispatch, &obj->sink_cookie); } else { IConnectionPoint_Unadvise(point, obj->sink_cookie); } IConnectionPoint_Release(point); } IConnectionPointContainer_Release(cont); } } }
static void advise_prop_notif(DocHost *This, BOOL set) { IConnectionPointContainer *cp_container; IConnectionPoint *cp; HRESULT hres; hres = IUnknown_QueryInterface(This->document, &IID_IConnectionPointContainer, (void**)&cp_container); if(FAILED(hres)) return; hres = IConnectionPointContainer_FindConnectionPoint(cp_container, &IID_IPropertyNotifySink, &cp); IConnectionPointContainer_Release(cp_container); if(FAILED(hres)) return; if(set) hres = IConnectionPoint_Advise(cp, (IUnknown*)&This->IPropertyNotifySink_iface, &This->prop_notif_cookie); else hres = IConnectionPoint_Unadvise(cp, This->prop_notif_cookie); IConnectionPoint_Release(cp); if(SUCCEEDED(hres)) This->is_prop_notif = set; }