CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

江湖救急!哪位大虾能给出一个在VC中使用Microsoft Word的例子,不胜感激!

楼主partime(partime)2002-01-14 00:30:28 在 VC/MFC / 基础类 提问

谢谢! 问题点数:100、回复次数:6Top

1 楼penis205(penis205)回复于 2002-01-14 00:46:41 得分 0

帮助文件Top

2 楼partime(partime)回复于 2002-01-14 00:59:17 得分 0

帮助中好像只有Excel的例子  
  Word的大大的没有。  
  微软大大的坏了Top

3 楼wei97081116(韦小宝)回复于 2002-01-14 09:50:35 得分 0

Q183369    
  Q183599   Top

4 楼lhbyron(天空的云)回复于 2002-01-14 09:59:12 得分 100

CSDN上的一篇文章的例子:  
   
  OLEObject   o1  
  string   s1  
  o1   =   CREATE   oleobject  
  o1.ConnectToNewObject("word.application")  
  o1.documents.open("c:\temp\temp.doc")  
  //   Make   the   object   visible   and   display   the    
  //   MS   Word   user   name   and   filename  
  o1.Application.Visible   =   True  
  s1   =   o1.UserName  
  MessageBox("MS   Word   User   Name",   s1)  
  s1   =   o1.ActiveDocument.Name  
  MessageBox("MS   Word   Document   Name",   s1)  
   
  //Insert   some   text   in   a   new   paragraph  
  o1.Selection.TypeParagraph()  
  o1.Selection.typetext("Insert   this   text")  
  o1.Selection.TypeParagraph()    
   
  //   Insert   text   at   the   first   bookmark  
  o1.ActiveDocument.Bookmarks[1].Select  
  o1.Selection.typetext("Hail!")  
   
  //   Insert   text   at   the   bookmark   named   End  
  o1.ActiveDocument.Bookmarks.item("End").Select  
  o1.Selection.typetext("Farewell!")  
   
  //   Save   the   document   and   shut   down   the   server  
  o1.ActiveDocument.Save()  
  o1.quit()  
  RETURN  
  Top

5 楼lhbyron(天空的云)回复于 2002-01-14 10:00:12 得分 0

再来一篇,呵呵  
   
  使用MFC在应用程序中嵌入MS   Word  
   
  郎锐    
  01-5-10   下午   02:07:48  
   
  --------------------------------------------------------------------------------  
   
   
  一、引言    
  Microsoft   Office办公套件以其功能强大、方便实用而被广泛使用。我们可以使用自动化作为Word用以把其功能显露给其他应用的方式,采用这种方式可以尽可能少的占用自动化客户的资源,并且不需要被访问对象的类型信息就可以进行调用。    
      
  二、创建工程    
  以下是创建这个MFC应用程序的步骤:    
  (1)使用AppWizard创建一个新的MFC   AppWizard(EXE)工程,命名为"Embed_Word"    
  (2)选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持。   其它都为默认。在ClassView中将产生如下类:    
  应用类:   CEmbed_WordApp   in   Embed_Word.h   and   Embed_Word.cpp    
  框架类:   CMainFrame   in   MainFrm.h   and   MainFrm.cpp    
  文档类:   CEmbed_WordDoc   in   Embed_WordDoc.h   and   Embed_WordDoc.cpp    
  视图类:   CEmbed_WordView   in   Embed_WordView.h   and   Embed_WordView.cpp    
  容器类:   CEmbed_WordCntrItem   in   CntrItem.h   and   CntrItem.cpp    
  (3)在View菜单中,选ClassWizard,选Automation选项卡,选Add   Class,选择From   a   TypeLibrary,   在Office目录中选中Microsoft   Word   97/2000   类型库Word8.olb或Word9.olb,会将把类型库中的所有类添加到你的工程中。这时,ClassView中会多出几十个类,可以通过这些类提供的接口来实现必要的功能。    
  (4)在CCntrItem.h中添加获取标准COM接口IDispach的函数:    
  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;    
  }    
  通过此函数来返回标准COM接口IDispatch。    
  (5)在Embed_WordView.cpp中添加对"MSWord8.h"的引用:#include   "MSWord8.h",如使用Word2000,则包含对"MSWord9.h"的引用。   然后在视类CEmbed_WordView中添加函数EmbedAutomateExcel():    
  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();    
  }    
  如果仔细研究过这段代码,会发现它同AppWizard自动生成的OnInsertObject()函数有着惊人的相似程度,看一下View类中的   OnInsertObject()   方法,对其中的注释引起了我们的兴趣,因为它和我们刚写的方法有惊人的相似。事实上,我们刚才写的只不过是OnInsertObject()的一个特例:OnInsertObject()允许用户从可用的OLE对象列表中选择其一插入到应用程序中。因为在此我们只需对Word进行自动化,所以派生了这一行为。    
  (6)为了在程序刚启动时便将Word嵌入到程序中来,还需在视类的OnInitialUpdate()函数中添加代码:    
  void   CEmbed_WordView::OnInitialUpdate()    
  {    
  CView::OnInitialUpdate();    
  EmbedAutomateWord();   //将Word嵌入    
  m_pSelection   =   NULL;    
  }    
  (7)为了使嵌入的工作区占满整个客户区可以通过修改OnDraw函数来实现:    
  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);    
  }    
  }    
      
  三、编译执行    
  编译执行该程序,当程序启动时便会试图启动Word自动化服务,这时鼠标会处于等待状态,当鼠标恢复正常状态时,Word以经被嵌入到了程序中来,工具条和菜单上会多出许多Word上的工具条和菜单,并可以使用Word的这些功能来为我们服务。    
      
  小结:通过这个例子我们可以对COM技术有初步的了解,也可以用类似的方法为程序添加其他服务,如Excel、PowerPoint等其他Office套件,使广大读者对自动化技术有基本的认识。    
   
  Top

6 楼partime(partime)回复于 2002-01-14 20:36:36 得分 0

已经成功了,谢谢大家!Top

相关问题

  • 江湖救急!哪位大虾能给出一个在VC中嵌入Microsoft Word的例子,不胜感激!
  • 江湖救急!请给出一个VC通过COM使用Word的例子,谢谢!
  • 江湖救急:BoundCheck 5.02 for Vc 序列号
  • 救急!救急!
  • 救急,救急
  • 救急!救急!
  • 请问如何用VC++生成word文档,不胜感激
  • 急救!急救!急救!急救!急救!急救!急救!急救!
  • 救急!!!!!!!
  • 救急!!!!!!

关键词

  • 函数
  • word
  • 自动化
  • 应用程序
  • cembed
  • pitem
  • wordview
  • wordcntritem
  • pselection
  • lpolelink

得分解答快速导航

  • 帖主:partime
  • lhbyron

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo