扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
LPDISPATCH GetIDispatch(); 其函数实现如下: LPDISPATCH CEmbed_WordCntrItem::GetIDispatch() { ASSERT_VALID(this); ASSERT(m_lpObject != NULL); LPUNKNOWN lpUnk = m_lpObject; Run(); LPOLELINK lpOleLink = NULL; if(m_lpObject->QueryInterface(IID_IOleLink,(LPVOID FAR*)&lpOleLink)== NOERROR) { ASSERT(lpOleLink != NULL); lpUnk = NULL; if(lpOleLink->GetBoundSource(&lpUnk) != NOERROR) { TRACE0("Warning: Link is not connected!\n"); lpOleLink->Release(); } ASSERT(lpUnk != NULL); } LPDISPATCH lpDispatch = NULL; if(lpUnk->QueryInterface(IID_IDispatch,(LPVOID FAR*)&lpDispatch) != NOERROR) { TRACE0("Waring: does not support IDispatch!\n"); return NULL; } ASSERT(lpDispatch != NULL); return lpDispatch; } |
void CEmbed_WordView::EmbedAutomateWord() { BeginWaitCursor(); CEmbed_WordCntrItem* pItem = NULL; TRY { CEmbed_WordDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pItem = new CEmbed_WordCntrItem(pDoc); ASSERT_VALID(pItem); GetClientRect(&pItem->rect); CLSID clsid; if(FAILED(::CLSIDFromProgID(L"Word.document",&clsid))) AfxThrowMemoryException(); if(!pItem->CreateNewItem(clsid)) AfxThrowMemoryException(); ASSERT_VALID(pItem); pItem->DoVerb(OLEIVERB_SHOW, this); m_pSelection = pItem; pDoc->UpdateAllViews(NULL); LPDISPATCH lpDisp; lpDisp = pItem->GetIDispatch(); } CATCH(CException, e) { if (pItem != NULL) { ASSERT_VALID(pItem); pItem->Delete(); } AfxMessageBox(IDP_FAILED_TO_CREATE); } END_CATCH EndWaitCursor(); } |
void CEmbed_WordView::OnInitialUpdate() { CView::OnInitialUpdate(); EmbedAutomateWord(); //将Word嵌入 m_pSelection = NULL; } |
void CEmbed_WordView::OnDraw(CDC* pDC) { CEmbed_WordDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (m_pSelection == NULL) { POSITION pos = pDoc->GetStartPosition(); m_pSelection = (CEmbed_WordCntrItem*)pDoc->GetNextClientItem(pos); } if (m_pSelection != NULL) { CRect rect; GetClientRect(&m_pSelection->rect); m_pSelection->OnGetItemPosition(rect); m_pSelection->Draw(pDC,rect); } } |
濡傛灉鎮ㄩ潪甯歌揩鍒囩殑鎯充簡瑙T棰嗗煙鏈€鏂颁骇鍝佷笌鎶€鏈俊鎭紝閭d箞璁㈤槄鑷抽《缃戞妧鏈偖浠跺皢鏄偍鐨勬渶浣抽€斿緞涔嬩竴銆�