在用MFC打开word文件时,需要导入.olb文件。
通过VC++6.0 工具栏上的View / ClassWizard->Add Class选择From a Type Library…定位需要的库文件导入。
本例使用的路径为:
C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB。
如图(1)、图(2)所示:
详细步骤如下:
1. 在VC++6.0中,新建一个基于对话框的MFC AppWizard(exe),命名为:OpenWord,如图(3)、图(4)所示:
2. 为Resource Files里,为对话框添加三个控件:一个静态文本控件、一个编辑框控件、一个按钮控件。如图(5)所示:
点击工具栏上的【View】/【ClassWizard】,导入对应的msword.olb文件,如上面的图(1)、图(2)所示。
4.双击对话框里的【打开】按钮,添加一个响应函数为OnButopen(),如图(6)所示:
代码如下:
void COpenWordDlg::OnButopen()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"All Files(*.doc)|*.doc||",AfxGetMainWnd()); //构造文件打开对话框
CString strPath; //声明变量
if(dlg.DoModal() == IDOK) //判断是否按下"打开"按钮
{
strPath = dlg.GetPathName(); //获得文件路径
m_Path.SetWindowText(strPath); //显示文件路径
//Word应用程序
_Application app;
Documents docs;
_Document doc;
//初始化连接
app.CreateDispatch("word.Application");
CComVariant a (_T(strPath)),b(false),c(0),d(true);
docs.AttachDispatch( app.GetDocuments());
doc.AttachDispatch(docs.Add(&a,&b,&c,&d));
//显示
app.SetVisible(true);
//释放环境
doc.ReleaseDispatch();
docs.ReleaseDispatch();
app.ReleaseDispatch();
}
}
4.为编辑框关联一个Control类型的变量: m_Path,如图(8)所示:
5.在OpenWorldDlg.h头文件中导入msword.h和atlbase.h
#include "msword.h"
#include <atlbase.h>
如图(9)所示:
6.初始化COM库。在应用程序类InitInstance中添加如下语句:
::CoInitialize(NULL);
如图(10)所示:
7.效果如下: