BOOL COleDocument::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { ASSERT_VALID(this); if (nCode == CN_COMMAND && nID >= ID_OLE_VERB_FIRST && nID <= ID_OLE_VERB_LAST) { CView* pRoutingView = GetRoutingView_(); COleClientItem* pSel = GetPrimarySelectedItem(pRoutingView); if (pSel != NULL) { if (pHandlerInfo != NULL) // routing test { pHandlerInfo->pTarget = this; return TRUE; // would be handled here } // activate the current selection with the appropriate verb CWaitCursor wait; pSel->DoVerb(nID - ID_OLE_VERB_FIRST, pRoutingView); return TRUE; // handled } } return CDocument::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); }
STDMETHODIMP COleUILinkInfo::OpenLinkSource(DWORD dwLink) { COleClientItem* pItem = (COleClientItem*)dwLink; ASSERT_VALID(pItem); ASSERT_KINDOF(COleClientItem, pItem); ASSERT(pItem->GetType() == OT_LINK); SCODE sc; TRY { // Note: no need for valid CView* since links don't activate inplace pItem->DoVerb(OLEIVERB_SHOW, NULL); sc = S_OK; } CATCH_ALL(e) { sc = COleException::Process(e); DELETE_EXCEPTION(e); } END_CATCH_ALL return sc; }