| /* |
| * OLE2 COM objects |
| * |
| * Copyright 1998 Eric Kohl |
| */ |
| |
| |
| #include <string.h> |
| #include "winbase.h" |
| #include "winerror.h" |
| #include "oleidl.h" |
| #include "debug.h" |
| |
| |
| /************************************************************************** |
| * IOleAdviseHolder Implementation |
| */ |
| typedef struct |
| { |
| ICOM_VTABLE(IOleAdviseHolder)* lpvtbl; |
| DWORD ref; |
| } IOleAdviseHolderImpl; |
| |
| static HRESULT WINAPI IOleAdviseHolder_fnQueryInterface(LPOLEADVISEHOLDER,REFIID,LPVOID*); |
| static ULONG WINAPI IOleAdviseHolder_fnAddRef(LPOLEADVISEHOLDER); |
| static ULONG WINAPI IOleAdviseHolder_fnRelease(LPOLEADVISEHOLDER); |
| static HRESULT WINAPI IOleAdviseHolder_fnAdvise(LPOLEADVISEHOLDER, IAdviseSink*, DWORD*); |
| static HRESULT WINAPI IOleAdviseHolder_fnUnadvise (LPOLEADVISEHOLDER, DWORD); |
| static HRESULT WINAPI IOleAdviseHolder_fnEnumAdvise (LPOLEADVISEHOLDER, IEnumSTATDATA **); |
| static HRESULT WINAPI IOleAdviseHolder_fnSendOnRename (LPOLEADVISEHOLDER, IMoniker *); |
| static HRESULT WINAPI IOleAdviseHolder_fnSendOnSave (LPOLEADVISEHOLDER); |
| static HRESULT WINAPI IOleAdviseHolder_fnSendOnClose (LPOLEADVISEHOLDER); |
| |
| |
| /************************************************************************** |
| * IOleAdviseHolder_VTable |
| */ |
| static struct ICOM_VTABLE(IOleAdviseHolder) oahvt = |
| { |
| IOleAdviseHolder_fnQueryInterface, |
| IOleAdviseHolder_fnAddRef, |
| IOleAdviseHolder_fnRelease, |
| IOleAdviseHolder_fnAdvise, |
| IOleAdviseHolder_fnUnadvise, |
| IOleAdviseHolder_fnEnumAdvise, |
| IOleAdviseHolder_fnSendOnRename, |
| IOleAdviseHolder_fnSendOnSave, |
| IOleAdviseHolder_fnSendOnClose |
| }; |
| |
| /************************************************************************** |
| * IOleAdviseHolder_Constructor |
| */ |
| |
| LPOLEADVISEHOLDER IOleAdviseHolder_Constructor() |
| { |
| IOleAdviseHolderImpl* lpoah; |
| |
| lpoah= (IOleAdviseHolderImpl*)HeapAlloc(GetProcessHeap(),0,sizeof(IOleAdviseHolderImpl)); |
| lpoah->ref = 1; |
| lpoah->lpvtbl = &oahvt; |
| FIXME (ole, "(%p)->()\n", lpoah); |
| |
| return (LPOLEADVISEHOLDER)lpoah; |
| } |
| |
| /************************************************************************** |
| * IOleAdviseHolder_QueryInterface |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_fnQueryInterface (LPOLEADVISEHOLDER iface, REFIID riid, LPVOID *ppvObj) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| 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(iface); |
| 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_fnAddRef (LPOLEADVISEHOLDER iface) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| FIXME (ole, "(%p)->(count=%lu)\n", This, This->ref); |
| return ++(This->ref); |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_Release |
| */ |
| static ULONG WINAPI |
| IOleAdviseHolder_fnRelease (LPOLEADVISEHOLDER iface) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| 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_fnAdvise (LPOLEADVISEHOLDER iface, |
| IAdviseSink *pAdvise, DWORD *pdwConnection) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| FIXME (ole, "(%p)->(%p %p)\n", This, pAdvise, pdwConnection); |
| |
| *pdwConnection = 0; |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_Unadvise |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_fnUnadvise (LPOLEADVISEHOLDER iface, DWORD dwConnection) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| FIXME (ole, "(%p)->(%lu)\n", This, dwConnection); |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_EnumAdvise |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_fnEnumAdvise (LPOLEADVISEHOLDER iface, IEnumSTATDATA **ppenumAdvise) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| FIXME (ole, "(%p)->(%p)\n", This, ppenumAdvise); |
| |
| *ppenumAdvise = NULL; |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_SendOnRename |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_fnSendOnRename (LPOLEADVISEHOLDER iface, IMoniker *pmk) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| FIXME (ole, "(%p)->(%p)\n", This, pmk); |
| |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_SendOnSave |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_fnSendOnSave (LPOLEADVISEHOLDER iface) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| FIXME (ole, "(%p)\n", This); |
| |
| |
| return S_OK; |
| } |
| |
| /****************************************************************************** |
| * IOleAdviseHolder_SendOnClose |
| */ |
| static HRESULT WINAPI |
| IOleAdviseHolder_fnSendOnClose (LPOLEADVISEHOLDER iface) |
| { |
| ICOM_THIS(IOleAdviseHolderImpl, iface); |
| 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; |
| } |
| |