1.新建MFC工程如图选择类向导
2.选择需要导入的接口_Application、Documents、_Document
3.导入后将生成的注释掉
#import "C:\\Program Files (x86)\\Microsoft Office\\Office16\\MSWORD.OLB" no_namespace
或者加几句话(展开看,需要在同一行)
#import "C:\\Program Files (x86)\\Microsoft Office\\Office16\\MSWORD.OLB" no_namespace raw_interfaces_only \
rename("FindText","_FindText") \
rename("Rectangle","_Rectangle") \
rename("ExitWindows","_ExitWindows")
4.添加导入的头文件
#include "CDocuments.h"
#include "CDocument0.h"
#include "CApplication.h"
5. 创建对话框用于显示,并写下交互
void CMFCApplication1Dlg::OnBnClickedButton1()
{
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
L"All Files(*.docx)|*.docx||", AfxGetMainWnd()); //构造文件打开对话框
CString strPath; //声明变量
if (dlg.DoModal() == IDOK) //判断是否按下"打开"按钮
{
strPath = dlg.GetPathName(); //获得文件路径
m_Path.SetWindowText(strPath); //显示文件路径
//Word应用程序
CApplication app ;
CDocuments docs;
CDocument0 doc;
//初始化连接
app.CreateDispatch(_T("word.Application"));
CComVariant a(strPath), b(false), c(0), d(true);
docs=app.get_Documents();
doc.AttachDispatch(docs.Add(&a, &b, &c, &d));
//显示
app.put_Visible(TRUE);
//释放环境
doc.ReleaseDispatch();
docs.ReleaseDispatch();
app.ReleaseDispatch();
}
}
6.实现效果
(word也会打开,这里不做展示)
7.可能会遇到的问题
1)调试信息
MFC的使用,有三种设置:
1.使用标准Windows库
2.在静态库中使用MFC:是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行;
3.在共享DLL中使用MFC:指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件;
多线程调试
/MD:在dll中使用多线程,创建动态链接库的release版本,需要选择。
/MT: 在exe里使用多线程,创建exe的release版本,需要选择。
/MTd:同/MT一样,不过是在Debug版本中使用。
/MDL:同/MD一样,不过是在Debug版本中使用。
如果是Debug的“在静态库中使用MFC”,不要使用MDd,使用MTd;
如果是Debug的“在共享DLL中使用MFC”,注意不要使用MTd,使用MDd;
如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT;
如果是Release版本的“在共享DLL中使用MFC”,不要使用MT,使用MD。