void CWordManager::DisconnectWordEventHandler() { try { if ((m_WordLoader != NULL) && (m_pEventHandler != NULL) && (AfxIsValidAddress(*(void**) m_pEventHandler, sizeof(void*), FALSE) && (AfxIsValidAddress(m_pEventHandler, m_pEventHandler->GetRuntimeClass()->m_nObjectSize, FALSE)))) { LPUNKNOWN p_unk = m_pEventHandler->GetIDispatch(FALSE); AfxConnectionUnadvise(m_WordLoader.GetInterfacePtr(), DIID___LMRA_XML_WordLoader, p_unk, FALSE, m_dwEventHandlerCookie); } else { m_pEventHandler = NULL; } } catch (...) { m_pEventHandler = NULL; } if(m_pEventHandler != NULL) { delete m_pEventHandler; m_pEventHandler = NULL; } }
CDiscFormatDataEvent::~CDiscFormatDataEvent() { if (m_dwCookie && (m_pUnkSrc != NULL) && (m_pUnkSink != NULL)) { AfxConnectionUnadvise(m_pUnkSrc, IID_DDiscFormat2DataEvents, m_pUnkSink, TRUE, m_dwCookie); } }
/** * Function name CImplMsgSink::UnregisterMsgSource * Description * @param LPUNKNOWN lpUnkMsgSource * @param DWORD dwCookie * @return HRESULT * @exception * @see CMsgWnd */ HRESULT CImplMsgSink::UnregisterMsgSource(LPUNKNOWN lpUnkMsgSource, DWORD dwCookie) { ASSERT(lpUnkMsgSource != NULL); LPUNKNOWN pUnkSink; BOOL bResult; HRESULT hr = InternalQueryInterface((IID*)&IID_IUnknown, (void**)&pUnkSink); if(FAILED(hr)) { return(hr); } bResult = AfxConnectionUnadvise(lpUnkMsgSource, IID__ICEMessageEvent, pUnkSink, TRUE, dwCookie); pUnkSink->Release(); return(bResult ? S_OK : E_FAIL); }
void CGraphRightView::OnDestroy() { if ( m_pGraphSink ) { //Get a pointer to sinks IUnknown, no AddRef. LPUNKNOWN pUnkSink = m_pGraphSink->GetIDispatch(FALSE); CWnd* pWnd = nullptr; pWnd = GetDlgItem(IDC_DMGRAPH_CTRL); LPUNKNOWN pUnk = pWnd->GetControlUnknown(); //Terminate a connection between source and sink. //m_pUnkSrc is IUnknown of server obtained by CoCreateInstance(). //m_dwCookie is a value obtained through AfxConnectionAdvise(). AfxConnectionUnadvise(pUnk, DIID__IDMGraphCtrlEvents, pUnkSink, FALSE, m_dwCookie); //Release the sink object delete m_pGraphSink; m_pGraphSink = nullptr; } CFormView::OnDestroy(); }
void CGnucleusDoc::DisconnectCore() { AfxConnectionUnadvise(m_autChat->m_lpDispatch, IID_IChatEvent, m_autChatSink->GetIDispatch(false), false, m_ChatEventCookie); delete m_autChatSink; m_autChatSink = NULL; AfxConnectionUnadvise(m_autUpdate->m_lpDispatch, IID_IUpdateEvent, m_autUpdateSink->GetIDispatch(false), false, m_UpdateEventCookie); delete m_autUpdateSink; m_autUpdateSink = NULL; AfxConnectionUnadvise(m_autUpload->m_lpDispatch, IID_IUploadEvent, m_autUploadSink->GetIDispatch(false), false, m_UploadEventCookie); delete m_autUploadSink; m_autUploadSink = NULL; AfxConnectionUnadvise(m_autDownload->m_lpDispatch, IID_IDownloadEvent, m_autDownloadSink->GetIDispatch(false), false, m_DownloadEventCookie); delete m_autDownloadSink; m_autDownloadSink = NULL; AfxConnectionUnadvise(m_autSearch->m_lpDispatch, IID_ISearchEvent, m_autSearchSink->GetIDispatch(false), false, m_SearchEventCookie); delete m_autSearchSink; m_autSearchSink = NULL; AfxConnectionUnadvise(m_autShare->m_lpDispatch, IID_IShareEvent, m_autShareSink->GetIDispatch(false), false, m_ShareEventCookie); delete m_autShareSink; m_autShareSink = NULL; AfxConnectionUnadvise(m_autNetwork->m_lpDispatch, IID_INetworkEvent, m_autNetworkSink->GetIDispatch(false), false, m_NetEventCookie); delete m_autNetworkSink; m_autNetworkSink = NULL; delete m_autChat; m_autChat = NULL; delete m_autUpdate; m_autUpdate = NULL; delete m_autUpload; m_autUpload = NULL; delete m_autDownload; m_autDownload = NULL; delete m_autSearch; m_autSearch = NULL; delete m_autShare; m_autShare = NULL; delete m_autMeta; m_autMeta = NULL; delete m_autCache; m_autCache = NULL; delete m_autNetwork; m_autNetwork = NULL; delete m_autPrefs; m_autPrefs = NULL; delete m_autCore; m_autCore = NULL; }