COleServerItem::~COleServerItem() { m_bAutoDelete = FALSE; // no delete during destructor // release any advise holders RELEASE(m_lpOleAdviseHolder); RELEASE(m_lpDataAdviseHolder); ExternalDisconnect(); // disconnect from the document COleServerDoc* pDoc = GetDocument(); if (pDoc != NULL) { // remove external lock from it if (m_bNeedUnlock) { pDoc->LockExternal(FALSE, TRUE); m_bNeedUnlock = FALSE; } // reset m_pEmbeddedItem if destroying embedded item if (pDoc->m_pEmbeddedItem == this) pDoc->m_pEmbeddedItem = NULL; // remove from list pDoc->RemoveItem(this); } // cleanup any references AfxOleUnlockApp(); }
COleLinkingDoc::~COleLinkingDoc() { AFX_BEGIN_DESTRUCTOR ASSERT_VALID(this); ASSERT(!m_bVisibleLock); DisconnectViews(); ASSERT(m_viewList.IsEmpty()); Revoke(); // cleanup naming support ExternalDisconnect(); AFX_END_DESTRUCTOR }