/* * OLE2 COM objects * * Copyright 1998 Eric Kohl */ #include #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; }