如何使用 MFC 创建并显示一个 PowerPoint 演示文稿
2010-07-23 15:35
936 查看
请按照下面的 Microsoft 知识库文章,以创建示例项目使用该 IDispatch 接口,并在 Msppt8.olb 类型库中的成员函数定义中的步骤 1 到 12:
178749 (http://support.microsoft.com/kb/178749/EN-US/ ) 如何创建自动化项目使用 MFC 和类型库
请按 CTRL + W 以再次显示此类向导并选择自动选项卡,单击添加类按钮并选择一个类型库。找到 Graph8.olb,然后单击打开。选择"表"类别,然后单击确定。单击确定以关闭此类向导。
注: 与本示例将创建的演示文稿包含嵌入的 Microsoft Graph 图表 ; 这是原因的在图中添加从 Microsoft Graph 类型库 (Graph8.olb) 的类。
AutoProjectDlg.cpp 文件顶部添加以下行:
[/code]
将下面的代码添加到 CAutoProjectDlg::OnRun() AutoProjectDlg.cpp 文件中:
[/code]
如果需要修改该工作分配的 strPic1 和 strTemplate 到图像文件和一个 PowerPoint 演示文稿模板的有效路径:
[/code]
178749 (http://support.microsoft.com/kb/178749/EN-US/ ) 如何创建自动化项目使用 MFC 和类型库
请按 CTRL + W 以再次显示此类向导并选择自动选项卡,单击添加类按钮并选择一个类型库。找到 Graph8.olb,然后单击打开。选择"表"类别,然后单击确定。单击确定以关闭此类向导。
注: 与本示例将创建的演示文稿包含嵌入的 Microsoft Graph 图表 ; 这是原因的在图中添加从 Microsoft Graph 类型库 (Graph8.olb) 的类。
AutoProjectDlg.cpp 文件顶部添加以下行:
[code] #include "msppt8.h" #include "graph8.h"
[/code]
将下面的代码添加到 CAutoProjectDlg::OnRun() AutoProjectDlg.cpp 文件中:
[code] // Commonly used OLE-variants. COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application app; Presentations presentations; _Presentation presentation; Slides slides; _Slide slide; ShapeRange shaperange; Shapes shapes; Shape shape; TextFrame textframe; TextRange textrange; Font font; FillFormat fillformat; ColorFormat colorformat; ShadowFormat shadow; CString strPic1 ="C://Program Files//Microsoft Office//Clipart//Popular//Amhappy.wmf"; CString strTemplate = "C://Program Files//Microsoft Office//Templates//Presentation Designs//Zesty.pot"; if(!app.CreateDispatch("Powerpoint.Application")) { AfxMessageBox("Could not create Powerpoint object."); return; } //Make the application visible and minimized. app.SetVisible((long)TRUE); app.SetWindowState((long) 2); //ppWindowMinimized=2 //Get the Presentations collection and create a new presentation //from a template(.POT) presentations.AttachDispatch(app.GetPresentations()); presentation = presentations.Open( strTemplate, //File name (long)0, //Read-only (long)-1, //Untitled (long)-1 //WithWindow ); slides = presentation.GetSlides(); //Add the first slide to the presentation. slide = (slides.Add((long)1, (long)11)); //pptLayoutTitleOnly=11 //Modify the text and font name of the TextFrame on the slide. shapes = slide.GetShapes(); shape = shapes.Item(COleVariant((short)1)); textframe = shape.GetTextFrame(); textrange = textframe.GetTextRange(); textrange.SetText("My Sample Presentation");//Set the text font = textrange.GetFont(); font.SetName("Comic Sans MS"); //Set the font name. font.SetSize((float)48); //Set the font size. //Insert a picture into the slide and position it. shapes.AddPicture( strPic1, //Filename (long)0, //LinkToFile (long)-1, //SaveWithDocument (float)150, //Left (float)150, //Top (float)500, //Width (float)350 //Height ); //Add the second slide to the presentation. slide = (slides.Add((long)2, (long)11)); //pptLayoutTitleOnly=11 //Modify the text and font name of the //TextFrame on the slide. shapes = slide.GetShapes(); shape = shapes.Item(COleVariant((short)1)); textframe = shape.GetTextFrame(); textrange = textframe.GetTextRange(); textrange.SetText("Look! It's a Graph!");//Set the text font = textrange.GetFont(); font.SetName("Comic Sans MS"); //Set the font name. font.SetSize((float)48); //Set the font size. //Add a Graph8 object to the slide. shape = shapes.AddOLEObject( (float)150, //Left (float)150, //Top (float)480, //Width (float)320, //Height "MSGraph.Chart", //Classname "", //FileName (long)0, //DisplayAsIcon "", //IconFileName (long)0, //IconIndex "", //IconLabel (long)0 //Link ); //Modify the charttype of the graph. Chart chart; OLEFormat olefmt = shape.GetOLEFormat(); chart = olefmt.GetObject(); chart.SetChartType((long)70); //Add the third slide to the presentation. slide = (slides.Add((long)3, (long)12)); //ppLayoutBlank = 12 //Change the background color of the slide. slide.SetFollowMasterBackground((long)0); shaperange = slide.GetBackground(); fillformat = shaperange.GetFill(); colorformat = fillformat.GetForeColor(); colorformat.SetSchemeColor((long)3); //ppShadow = 3 //Add Text Effects to the last slide shapes = slide.GetShapes(); shape = shapes.AddTextEffect( (long)27, //PresetTextEffect (msoTextEffect28 = 27) "The End", //Text "Impact", //FontName (float)96, //FontSize (long)0, //FontBold (long)0, //FontItalic (float)230, //Left (float)200 //Top ); //Apply a gradient fill to the texteffect. fillformat = shape.GetFill(); colorformat = fillformat.GetForeColor(); colorformat.SetSchemeColor((long)2); //ppForeground = 2 colorformat = fillformat.GetBackColor(); colorformat.SetSchemeColor((long)4); //ppTitle = 4 fillformat.TwoColorGradient ((long)1, (long)1); //msoGradientHorizontal = 1 //Apply a shadow to the texteffect. shadow = shape.GetShadow(); colorformat = shadow.GetForeColor(); colorformat.SetSchemeColor((long)2); //ppForeground = 2 shadow.SetVisible((long)-1); shadow.IncrementOffsetX((float)3); shadow.IncrementOffsetY((float)3); SlideShowTransition show; SlideShowSettings slideshow; //Set the Transition effects for Slide 1. slide = slides.Item(COleVariant((short)1)); show = slide.GetSlideShowTransition(); show.SetEntryEffect((long)769); //ppEffectBlindsHorizontal=769 show.SetAdvanceOnTime((long)-1); show.SetAdvanceTime((float)3); //Set the Transition effects for Slide 2. slide = slides.Item(COleVariant((short)2)); show = slide.GetSlideShowTransition(); show.SetEntryEffect((long)770); //ppEffectBlindsVertical=770 show.SetAdvanceOnTime((long)-1); show.SetAdvanceTime((float)3); //Set the Transition effects for Slide 3. slide = slides.Item(COleVariant((short)3)); show = slide.GetSlideShowTransition(); show.SetEntryEffect((long)3073); //ppEffectBoxOut=3073 show.SetAdvanceOnTime((long)-1); show.SetAdvanceTime((float)3); //Run the show. slideshow = presentation.GetSlideShowSettings(); slideshow.Run(); //Quit the application after waiting 9 seconds (the length of the //slide show). ::Sleep(9000); presentation.SetSaved((long)-1); app.Quit();
[/code]
如果需要修改该工作分配的 strPic1 和 strTemplate 到图像文件和一个 PowerPoint 演示文稿模板的有效路径:
[code]CString strPic1 ="C://Program Files//Microsoft Office//Clipart//Popular//Amhappy.wmf"; CString strTemplate = "C://Program Files//Microsoft Office//Templates//Presentation Designs//Zesty.pot";
[/code]
相关文章推荐
- 如何使用VC/MFC创建一个线程池
- Occt的visualization模块:如何使用MFC和Occt显示一个Bspline曲线
- 本文演示如何创建和使用自动化操作从 Visual c + +.net 和 Microsoft 基础类 (MFC) Word 文档
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- MFC入门学习之控件(2)创建一个对话框窗口并在运行时显示
- 如何使用 CoreText 创建一个简单的杂志应用
- 如何使用 CoreText 创建一个简单的杂志应用
- 当打开一个文档时,MFC如何选择所使用的文档模板对象?
- 如何使用VC创建一个ActiveX控件,并使其可以被VB使用
- 如何使用DialogFragment类来创建和显示对话框
- 在Maximo7中如何使用日志记录应用程序创建一个日志文件?
- 新手上道,教你如何使用http://jingyan.baidu.com/article/cdddd41c5cf93353ca00e16d.htm创建一个html+php+js+mysql
- Java核心知识点学习----线程中如何创建锁和使用锁 Lock,设计一个缓存系统
- PowerPoint如何将演示文稿转换为WORD文档
- 线程中如何创建锁和使用锁 Lock,设计一个缓存系统
- 如何在MFC中创建和使用对话框
- PowerDesigner的创建使用及如何设置显示注释信息
- 一个可以显示图片(包括GIF动画)的ATL控件,以及在RichEdit中如何使用此控件插入图片
- 如何使用CSS栅格布局创建一个简单页面布局
- VS2010配置opencv2.4.8,用MFC创建显示一个图片的简单程序