STDMETHODIMP CTextObject::DAdvise(FORMATETC* pFormatEtc, DWORD advf, IAdviseSink* pAdvSink, DWORD* pdwConnection) { HRESULT hRes = m_spDataAdviseHolder == NULL ? CreateDataAdviseHolder(&m_spDataAdviseHolder) : S_OK; if (SUCCEEDED(hRes)) hRes = m_spDataAdviseHolder->Advise(this, pFormatEtc, advf, pAdvSink, pdwConnection); return hRes; }
/// Function name : DAdvise // Description : Register for a 'data changed' notification // // FORMATETC* pFormat : [in] The data format to monitor for changes // DWORD dwFlags : [in] flags // IAdviseSink* pOutput : [out] The OLE object to call when changes occurr // DWORD* pdwConnectionID : [out] Unique ID to identify the event // // Return Value : S_OK if succesful // OLE_Method HRESULT RichEditImage::DAdvise(FORMATETC* pFormat, DWORD dwFlags, IAdviseSink* pOutput, DWORD* pdwConnectionID) { HRESULT hResult; // Operation result // Create events object if necessary if (!m_pEvents AND FAILED(hResult = CreateDataAdviseHolder(&m_pEvents))) return hResult; // Register connect using events object return m_pEvents->Advise(this, pFormat, dwFlags, pOutput, pdwConnectionID); }
ASSERTDATA //+---------------------------------------------------------------------------- // // Member: // CDataAdviseCache::CreateDataAdviseCache, static public // // Synopsis: // Creates an instance of the CDataAdviseCache // // Arguments: // [pp] -- pointer to a location to where to return the // newly created CDataAdviseCache // // Returns: // E_OUTOFMEMORY, S_OK // // Notes: // // History: // 11/02/93 - ChrisWe - file cleanup and inspection // //----------------------------------------------------------------------------- #pragma SEG(CreateDataAdviseCache) FARINTERNAL CDataAdviseCache::CreateDataAdviseCache(LPDATAADVCACHE FAR* pp) { VDATEHEAP(); VDATEPTRIN(pp, LPDATAADVCACHE); // try to allocate the CDataAdviseCache if(NULL == (*pp = new DATAADVCACHE)) return ReportResult(0, E_OUTOFMEMORY, 0, 0); // initialize the DataAdviseHolder member if(CreateDataAdviseHolder(&((*pp)->m_pDAH)) != NOERROR) { // free the DataAdviseCache delete *pp; *pp = NULL; return ReportResult(0, E_OUTOFMEMORY, 0, 0); } return(NOERROR); }