我的问题很简单,只是在程序中打开Word文档并在View里面显示其内就行了,不要求能编辑和加入数据等。参考了前面的贴子中各位高手的指点,可是还是遇到一些问题。
                  //...以上省略,下面是打开文件的操作
CWordDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new CWordCntrItem(pDoc);
ASSERT_VALID(pItem);

CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document",&clsid)))
AfxThrowMemoryException();
if(!pItem->CreateFromFile(dlgFile.GetPathName(),clsid))
AfxThrowMemoryException(); pItem->DoVerb(OLEIVERB_SHOW, this);

m_pSelection = pItem
m_pSelection->DeactivateUI();
pDoc->UpdateAllViews(NULL);
//以下省略....为了使嵌入的工作区占满整个客户区,修改OnDraw():
if (m_pSelection != NULL){
CRect rect;
GetClientRect(&rect);
                  //前面的贴子中都是GetClientRect(&m_pSelection->rect); 
                  //然后是m_pSelection->OnGetItemPosition(rect); 
                  //对此我很不理解,而且这样写运行程序后也不是想要的结果
                  //哪位高手请指教此处的意义
                  //这里我先暂时自已把它改了
m_pSelection->Draw(pDC,rect);
}虽然做如上修改后能够打开Word文档并显示,可是视图重画时还是有问题,那个嵌入的工作区还是老是跟着显示出来,不是上面用m_pSelection->DeactivateUI();来恢复到初始状态了吗?为什么还是这样呢?
还有,如果Word文档有很多页,怎样让它在视图中都显示出来?就完全和在Word中打开一样,拖运滚动条就可以查看各页。不过我想这既然是嵌入,应该是理所当然的事。但如何来实现呢?对以上问题困惑了好久了,各位高手帮帮忙啊!问题解决后,定另以高分相赠!
谢谢

解决方案 »

  1.   

    滚动条就是Word的,只不过大小适中才能显示.你需要调整条目的Rect正好是视图的大小-滚动条.
      

  2.   

    能再给点提示吗。条目是什么?我刚开始学VC,好多东西还不懂
    最好能有示例代码
    既然滚动条是Word的,那我的视类是由CView派生来的应该没关系吧。此外我还把基类改为CRichEditView另行测行,虽然打开后有滚动条,但却还是只显示一页。我还想问一下嵌入的工作区和View有什么关系?
      

  3.   

    View显示插入到Doc的COleClientItem条目