| /* |
| * OLE2 COM objects |
| * |
| * Copyright 1998 Eric Kohl |
| */ |
| |
| |
| #include <string.h> |
| #include "oleobj.h" |
| #include "winbase.h" |
| #include "winerror.h" |
| #include "wine/obj_base.h" |
| #include "wine/obj_storage.h" |
| #include "wine/obj_moniker.h" |
| #include "wine/obj_dataobject.h" |
| #include "debug.h" |
| |
| |
| /************************************************************************** |
| * IOleAdviseHolder Implementation |
| */ |
| static HRESULT WINAPI IOleAdviseHolder_QueryInterface(LPOLEADVISEHOLDER,REFIID,LPVOID*); |
| static ULONG WINAPI IOleAdviseHolder_AddRef(LPOLEADVISEHOLDER); |
| static ULONG WINAPI IOleAdviseHolder_Release(LPOLEADVISEHOLDER); |
| static HRESULT WINAPI IOleAdviseHolder_Advise(LPOLEADVISEHOLDER, IAdviseSink*, DWORD*); |
| static HRESULT WINAPI IOleAdviseHolder_Unadvise (LPOLEADVISEHOLDER, DWORD); |
| static HRESULT WINAPI IOleAdviseHolder_EnumAdvise (LPOLEADVISEHOLDER, IEnumSTATDATA **); |
| static HRESULT WINAPI IOleAdviseHolder_SendOnRename (LPOLEADVISEHOLDER, IMoniker *); |
| static HRESULT WINAPI IOleAdviseHolder_SendOnSave (LPOLEADVISEHOLDER this); |
| static HRESULT WINAPI IOleAdviseHolder_SendOnClose (LPOLEADVISEHOLDER this); |
| |
| |
| /************************************************************************** |
| * IOleAdviseHolder_VTable |
| */ |
| static IOleAdviseHolder_VTable oahvt = |
| { |
| IOleAdviseHolder_QueryInterface, |
| IOleAdviseHolder_AddRef, |
| IOleAdviseHolder_Release, |
| IOleAdviseHolder_Advise, |
| IOleAdviseHolder_Unadvise, |
| IOleAdviseHolder_EnumAdvise, |
| IOleAdviseHolder_SendOnRename, |
| IOleAdviseHolder_SendOnSave, |
| IOleAdviseHolder_SendOnClose |
| }; |
| |
| /************************************************************************** |
| * IOleAdviseHolder_Constructor |
| */ |
| |
| LPOLEADVISEHOLDER IOleAdviseHolder_Constructor() |
| { |
| LPOLEADVISEHOLDER lpoah; |
| |
| lpoah= (LPOLEADVISEHOLDER)HeapAlloc(GetProcessHeap(),0,sizeof(IOleAdviseHolder)); |
| lpoah->ref = 1; |
| lpoah->lpvtbl = &oahvt; |
| FIXME (ole, "(%p)->()\n", lpoah); |
| |
| return lpoah; |
| } |
| |
| /************************************************************************** |
| * IOleAdviseHolder_QueryInterface |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_QueryInterface (LPOLEADVISEHOLDER this, REFIID riid, LPVOID *ppvObj) |
| { |
| char xriid[50]; |
| WINE_StringFromCLSID((LPCLSID)riid,xriid); |
| FIXME (ole, "(%p)->(\n\tIID:\t%s)\n", this, xriid); |
| |
| *ppvObj = NULL; |
| |
| if(IsEqualIID(riid, &IID_IUnknown)) { |
| /* IUnknown */ |
| *ppvObj = this; |
| } |
| else if(IsEqualIID(riid, &IID_IOleAdviseHolder)) { |
| /* IOleAdviseHolder */ |
| *ppvObj = (IOleAdviseHolder*) this; |
| } |
| |
| if(*ppvObj) { |
| (*(LPOLEADVISEHOLDER*)ppvObj)->lpvtbl->fnAddRef(this); |
| FIXME (ole, "-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); |
| return S_OK; |
| } |
| |
| FIXME (ole, "-- Interface: E_NOINTERFACE\n"); |
| return E_NOINTERFACE; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_AddRef |
| */ |
| static ULONG WINAPI |
| IOleAdviseHolder_AddRef (LPOLEADVISEHOLDER this) |
| { |
| FIXME (ole, "(%p)->(count=%lu)\n", this, this->ref); |
| return ++(this->ref); |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_Release |
| */ |
| static ULONG WINAPI |
| IOleAdviseHolder_Release (LPOLEADVISEHOLDER this) |
| { |
| FIXME (ole, "(%p)->(count=%lu)\n", this, this->ref); |
| if (!--(this->ref)) { |
| FIXME (ole, "-- destroying IOleAdviseHolder(%p)\n", this); |
| HeapFree(GetProcessHeap(),0,this); |
| return 0; |
| } |
| return this->ref; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_Advise |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_Advise (LPOLEADVISEHOLDER this, |
| IAdviseSink *pAdvise, DWORD *pdwConnection) |
| { |
| FIXME (ole, "(%p)->(%p %p)\n", this, pAdvise, pdwConnection); |
| |
| *pdwConnection = 0; |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_Unadvise |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_Unadvise (LPOLEADVISEHOLDER this, DWORD dwConnection) |
| { |
| FIXME (ole, "(%p)->(%lu)\n", this, dwConnection); |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_EnumAdvise |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_EnumAdvise (LPOLEADVISEHOLDER this, IEnumSTATDATA **ppenumAdvise) |
| { |
| FIXME (ole, "(%p)->(%p)\n", this, ppenumAdvise); |
| |
| *ppenumAdvise = NULL; |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_SendOnRename |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_SendOnRename (LPOLEADVISEHOLDER this, IMoniker *pmk) |
| { |
| FIXME (ole, "(%p)->(%p)\n", this, pmk); |
| |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_SendOnSave |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_SendOnSave (LPOLEADVISEHOLDER this) |
| { |
| FIXME (ole, "(%p)\n", this); |
| |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_SendOnClose |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_SendOnClose (LPOLEADVISEHOLDER this) |
| { |
| FIXME (ole, "(%p)\n", this); |
| |
| |
| return S_OK; |
| } |
| |
| /*********************************************************************** |
| * API functions |
| */ |
| |
| /*********************************************************************** |
| * CreateOleAdviseHolder [OLE32.59] |
| */ |
| HRESULT WINAPI CreateOleAdviseHolder (LPOLEADVISEHOLDER *ppOAHolder) |
| { |
| FIXME(ole,"(%p): stub!\n", ppOAHolder); |
| |
| *ppOAHolder = IOleAdviseHolder_Constructor (); |
| if (*ppOAHolder) |
| return S_OK; |
| |
| *ppOAHolder = 0; |
| return E_OUTOFMEMORY; |
| } |
| |