void COleIPFrameWnd::DestroySharedMenu() { if (m_hSharedMenu == NULL) { ASSERT(m_hOleMenu == NULL); return; } // get in-place menu to be unmerged (must be same as during activation) HMENU hMenu = GetInPlaceMenu(); if (hMenu == NULL) return; // remove our menu popups from the shared menu AfxUnmergeMenus(CMenu::FromHandle(m_hSharedMenu), CMenu::FromHandle(hMenu)); // allow container to remove its items from the menu ASSERT(m_lpFrame != NULL); VERIFY(m_lpFrame->RemoveMenus(m_hSharedMenu) == S_OK); // now destroy the menu ::DestroyMenu(m_hSharedMenu); m_hSharedMenu = NULL; #ifndef _MAC if (m_hOleMenu != NULL) { VERIFY(::OleDestroyMenuDescriptor(m_hOleMenu) == S_OK); m_hOleMenu = NULL; } #endif }
void COleClientItem::OnRemoveMenus(CMenu* pMenuShared) { ASSERT_VALID(this); ASSERT_VALID(pMenuShared); // get menu from document template CDocTemplate* pTemplate = GetDocument()->GetDocTemplate(); HMENU hMenuOLE = pTemplate->m_hMenuInPlace; if (hMenuOLE == NULL) return; // remove any menu popups originally added in OnInsertMenus AfxUnmergeMenus(pMenuShared->GetSafeHmenu(), hMenuOLE); }
void COleControl::DestroySharedMenu() { ASSERT(m_pUIActiveInfo != NULL); if (m_pUIActiveInfo == NULL) return; HMENU hInPlaceMenu = NULL; if ((m_pUIActiveInfo->m_hSharedMenu != NULL) && ((hInPlaceMenu = OnGetInPlaceMenu()) != NULL)) { // remove our menu popups from the shared menu AfxUnmergeMenus(m_pUIActiveInfo->m_hSharedMenu, hInPlaceMenu); // allow container to remove its items from the menu ASSERT(m_pInPlaceFrame != NULL); VERIFY(m_pInPlaceFrame->RemoveMenus(m_pUIActiveInfo->m_hSharedMenu) == S_OK); } delete m_pUIActiveInfo; m_pUIActiveInfo = NULL; }