如何通过使用 Visual c + + 5.0 或 Visual c + + 6.0 中的 Microsoft 基础类具有自动化 PowerPoint...

通过使用自动化在 PowerPoint 中,您可以以编程方式打印、 显示幻灯片,和执行大多数您可以以交互方式执行该操作。 请按照下列步骤以生成并运行自动化示例:

  1. 创建一个新的基于对话框的 MFC EXE 项目。
  2. 将按钮添加到您的对话框和 BN_CLICKED 处理程序中,为它。
  3. 打开 类向导 (Ctrl + W),单击 自动化 选项卡、 单击 添加类,并选择 从类型库
  4. 转到目录 (例如对于是 Files/Microsoft Office/Office) Office 的安装位置,然后选择 Msppt8.olb。PowerPoint 对象库中的 PowerPoint 2000 命名 Msppt9.olb。PowerPoint 对象库中的 PowerPoint 2002 是 Msppt.olb,它位于,通过 c:/Program Files/Microsoft Office/Office10 文件夹中的默认值。PowerPoint 对象库中的 Microsoft Office PowerPoint 2003 是 Msppt.olb,它位于,通过 c:/Program Files/Microsoft Office/Office11 文件夹中的默认值
  5. 选择查找的所有类,然后单击 确定 以回到您的项目。类向导已从 PowerPoint 类型库生成一些自动化"包装类",并创建 Msppt8.h 和 Msppt8.cpp 文件。
  6. 下面的代码添加到按钮处理程序:

// Start PowerPoint. _Application app; COleException e; if(!app.CreateDispatch("Powerpoint.Application", &e)) { CString str; str.Format("CreateDispatch() failed w/err 0x%08lx", e.m_sc), AfxMessageBox(str, MB_SETFOREGROUND); return; } // Make it visible. app.SetVisible(TRUE); // Get Presentations collection and add a new presentation. Presentations presSet(app.GetPresentations()); _Presentation pres(presSet.Add(TRUE)); // Get Slides collection and add a new slide. Slides slideSet(pres.GetSlides()); _Slide slide1(slideSet.Add(1, 2)); // Add text to slide, by navigating the slide as follows: // slide1.shapes(#).TextFrame.TextRange.Text { Shapes shapes(slide1.GetShapes()); Shape shape(shapes.Item(COleVariant((long)1))); TextFrame textFrame(shape.GetTextFrame()); TextRange textRange(textFrame.GetTextRange()); textRange.SetText("My first slide"); } { Shapes shapes(slide1.GetShapes()); Shape shape(shapes.Item(COleVariant((long)2))); TextFrame textFrame(shape.GetTextFrame()); TextRange textRange(textFrame.GetTextRange()); textRange.SetText("Automating PowerPoint is easy/r/n" "Using Visual C++ is powerful!"); } // Add another slide with a chart. _Slide slide2(slideSet.Add(2, 5)); // Add text to slide as before. { Shapes shapes(slide2.GetShapes()); Shape shape(shapes.Item(COleVariant((long)1))); TextFrame textFrame(shape.GetTextFrame()); TextRange textRange(textFrame.GetTextRange()); textRange.SetText("Slide 2's topic"); } { Shapes shapes(slide2.GetShapes()); Shape shape(shapes.Item(COleVariant((long)2))); TextFrame textFrame(shape.GetTextFrame()); TextRange textRange(textFrame.GetTextRange()); textRange.SetText("You can create and use charts " "in your PowerPoint slides!"); } // Add a chart where the default one was created. { // First get coordinates of old chart. float cTop, cWidth, cHeight, cLeft; Shapes shapes(slide2.GetShapes()); Shape shape(shapes.Item(COleVariant((long)3))); cTop = shape.GetTop(); cWidth = shape.GetWidth(); cHeight = shape.GetHeight(); cLeft = shape.GetLeft(); // Delete original chart. shape.Delete(); // Now add your own back where old one was. Shape tmpShape(shapes.AddOLEObject(cLeft, cTop, cWidth, cHeight, "MSGraph.Chart", "", 0, "", 0, "", 0)); } // Add another slide, with an Organization chart. _Slide slide3(slideSet.Add(3, 7)); // Add text to slide as before. { Shapes shapes(slide3.GetShapes()); Shape shape(shapes.Item(COleVariant((long)1))); TextFrame textFrame(shape.GetTextFrame()); TextRange textRange(textFrame.GetTextRange()); textRange.SetText("The rest is only limited by your Imagination"); } // Add a chart where the default one was created. { // First get coordinates of old chart. float cTop, cWidth, cHeight, cLeft; Shapes shapes(slide3.GetShapes()); Shape shape(shapes.Item(COleVariant((long)2))); cTop = shape.GetTop(); cWidth = shape.GetWidth(); cHeight = shape.GetHeight(); cLeft = shape.GetLeft(); // Delete original chart. shape.Delete(); // Now add your own back where old one was. // The next line assumes you have the Microsoft OrgChart application // installed and registered on your computer. Shape tmpShape(shapes.AddOLEObject(cLeft, cTop, cWidth, cHeight, "OrgPlusWOPX.4", "", 0, "", 0, "", 0)); } // Setup slide show properties. for(int i=1; i<=3; i++) { _Slide slide(slideSet.Item(COleVariant((long)i))); SlideShowTransition sst(slide.GetSlideShowTransition()); sst.SetEntryEffect(513); // Random. sst.SetAdvanceOnTime(TRUE); sst.SetAdvanceTime(5.0); // 5-seconds per slide. } // Prepare and run a slide show. { SlideShowSettings sss(pres.GetSlideShowSettings()); sss.SetShowType(3); // Kiosk. sss.SetLoopUntilStopped(TRUE); sss.SetRangeType(1); // Show all. sss.SetAdvanceMode(2); // Use slide timings. SlideShowWindow ssw(sss.Run()); // Run show. } // Sleep so user can watch slide show. ::Sleep(15000); // Tell PowerPoint to quit. app.Quit();

7. 实施按钮处理程序的前面添加以下行:

#include "msppt8.h" //msppt9.h for PowerPoint 2000, msppt.h for PowerPoint 2002 and PowerPoint 2003 // Ole initialization class. class OleInitClass { public: OleInitClass() { OleInitialize(NULL); } ~OleInitClass() { OleUninitialize(); } }; // This global class calls OleInitialize() at // application startup, and calls OleUninitialize() // at application exit. OleInitClass g_OleInitClass;

8. 编译并运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值