C++MFC往Word模板中添加图片.docx
- 文档编号:4993369
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:12
- 大小:2.02MB
C++MFC往Word模板中添加图片.docx
《C++MFC往Word模板中添加图片.docx》由会员分享,可在线阅读,更多相关《C++MFC往Word模板中添加图片.docx(12页珍藏版)》请在冰豆网上搜索。
C++MFC往Word模板中添加图片
往Word模板中添加图片
新建一个基于对话框的MFC应用程序工程,将对话框界面设置成图1所示。
图1
通过类向导添加所有的接口,使VS与Word建立联系。
“类向导”界面如图2,在“添加类”处选择“类型库中的MFC类(T)...”,弹出图3所示界面,选择从文件中添加类。
图2
图3
找到计算机中Word安装路径中“MSWORD.OLB”文件,如图4所示,单击“打开”按钮,则“接口”窗口出现Word相关接口,如图5所示。
图4
图5
可以根据自己的需要添加接口,往Word模板中添加图片则需要用到_Application、_Document、Cell、Documents、Inlineshape、Inlineshapes、Selection、Table和Tables共9个接口,找到接口并点击图5中“>”符号,则生成相应的类,CApplication、CDocument0、CCell、CDocuments、Cnlineshape、Cnlineshapes、CSelection、CTable0和CTables0共9个类,如图6所示。
图6
单击“完成”、“应用”之后,在“解决方案资源管理器”可以看见生成了相应的头文件,如图7所示;在“类视图”可以看见生成了相应的类,如图8所示。
图7
图8
双击打开图7所示生成的各头文件,可见第三行的代码#import"D:
\\MicrosoftOffice\\Office12\\MSWORD.OLB"no_namespace,如图9为CApplication.h中的此代码,将其注释掉,否则无法编译成功。
图9
找到与项目同名的源文件,这里是AddPictureToWord.cpp,在图10所示位置添加代码。
if(!
AfxOleInit())
{
AfxMessageBox(_T("无法初始化COM的动态链接库!
"));
returnFALSE;
}
图10
双击图1中的“生成报告”按钮,将类向导生成的所有头文件添加到弹出的源文件中,如图11所示。
图11
在双击图1中的“生成报告”按钮弹出的源文件中添加代码,代码在本文末已给出。
代码添加后会出现图12所示,获取路径的错误,在项目-属性-配置属性-常规-字符集中,将项目的字符集改为“使用多字节字符集”,如图13所示。
则该错误得到解决。
图12
图13
之后就可以生产解决方案了,生成解决方案时可以看见,出现了如图14所示错误,在项目-属性-配置属性-C/C++-预处理器-预处理器定义中,添加“_CRT_SECURE_NO_WARNINGS”即可,如图15所示。
图14
图15
在生成得到的解决方案文件夹中有.exe、.ilk和.pdb三个文件,在该文件夹中放入Word模板“Template.dot”和欲添加到模板中的图片,如图16所示。
图16
此时进行启动调试则可在上述文件夹中得到添加了图片的Word文档,调试结果如图17和图18所示。
图17
图18
voidCAddPictureToWordDlg:
:
OnBnClickedButton1()中的代码
//获取应用当前Debug路径
charfileName[MAX_PATH];
GetModuleFileName(NULL,fileName,MAX_PATH);
chardir[260];
chardirver[100];
_splitpath(fileName,dirver,dir,NULL,NULL);
CStringstrAppPath=dirver;
strAppPath+=dir;
//CStringstrAppPath=_T("D:
\\");
COleVariantcovZero((short)0),
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),
covDocxType((short)0);
//定义word变量
CApplicationwordApp;//wordApp
CDocumentsdocxs;//docxs
CDocument0docx,docx_active;//docx
if(!
wordApp.CreateDispatch(_T("Word.Application")))//实例化wordApp,必须有初始化
{
AfxMessageBox(_T("本机没有安装word产品!
"));
return;
}
else
{
wordApp.put_Visible(FALSE);//设置文档开始不可见
CStringwordVersion=wordApp.get_Version();//获得当前word的版本,比如word2010为14.0,2013为15.0
docxs=wordApp.get_Documents();//得到docxs
docx=docxs.Add(covOptional,covOptional,covOptional,covOptional);//添加一个docx
CComVarianttpl(strAppPath+_T("\\Template.dot")),Visble,DocxType(0),NewTemplate(false);
docx=docxs.Add(&tpl,&NewTemplate,&DocxType,&Visble);
if(NULL==docx.m_lpDispatch)
return;
CSelectionwordSelection=wordApp.get_Selection();//声明一个CSelection对象,并实例化
//定义table和cell变量
CTable0table;
CTables0tables;
CCellcell;
//填写表格
wordSelection=wordApp.get_Selection();//获取光标位置,一般在文首
wordSelection.MoveDown(COleVariant((short)5),COleVariant((short)2),COleVariant((short)0));
tables=docx.get_Tables();
table=tables.Item(tables.get_Count());
//插入图片
//wordSelection.TypeParagraph();//另起一段
cell=table.Cell(1,1);
cell.Select();//选中该单元
CStringstrPicture1=strAppPath+_T("\\Result\\潘春春.jpg");
CnlineShapesnLineShapes1=wordSelection.get_InlineShapes();
CnlineShapenLineshape1=nLineShapes1.AddPicture(strPicture1,covFalse,covTrue,covOptional);
nLineshape1.put_Height(478);
nLineshape1.put_Width(550);
//wordApp.put_Visible(TRUE);//Word程序可见,显示报告
//保存word文档
CStringstrSavePath=strAppPath;
strSavePath+=_T("\\Word.docx");
docx.SaveAs(COleVariant(strSavePath),covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
//退出word应用
docx.Close(covFalse,covOptional,covOptional);
wordApp.Quit(covOptional,covOptional,covOptional);
wordApp.ReleaseDispatch();
MessageBox(_T("生成成功!
"));
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC Word 模板 添加 图片