How to automate PowerPoint by using Visual C++ 5.0 or Visual C++ 6.0 with The Microsoft Foundation Classes

SUMMARY

<script type="text/javascript">loadTOCNode(1, 'summary');</script>
This article describes how to automate Microsoft PowerPoint by using Visual C++ 5.0 or Visual C++ 6.0 with The Microsoft Foundation Classes (MFC).

Back to the top

MORE INFORMATION

<script type="text/javascript">loadTOCNode(1, 'moreinformation');</script>
By using automation in PowerPoint, you can programmatically print, display slides, and do most of the things you can do interactively. Follow these steps to build and run the automation example:
1.Create a new dialog-based MFC EXE project.
2.Add a button to your dialog box and a BN_CLICKED-handler for it.
3.Open ClassWizard (Ctrl+W), click the Automation tab, click Add Class, and select From a type library.
4.Go to the directory where you installed Office (for example, C:/Program Files/Microsoft Office/Office) and choose Msppt8.olb. The PowerPoint object library for PowerPoint 2000 is named Msppt9.olb. The PowerPoint object library for PowerPoint 2002 is Msppt.olb, and it is located, by default, in the c:/Program Files/Microsoft Office/Office10 folder. The PowerPoint object library for Microsoft Office PowerPoint 2003 is Msppt.olb, and it is located, by default, in the c:/Program Files/Microsoft Office/Office11 folder
5.Select all the classes it finds, and click OK to get back to your project. ClassWizard has generated some automation "wrapper classes" from the PowerPoint type library and created the files Msppt8.h and Msppt8.cpp.
6.

Add the following code to your button handler: 

//  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 "
      
"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.Add the following lines just before the implementing your button handler:
        
        
#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.Compile and run.

Back to the top

REFERENCES

<script type="text/javascript">loadTOCNode(1, 'references');</script>
For additional information about automating Microsoft Office applications from Visual C++, click the following article number to view the article in the Microsoft Knowledge Base:
196776 (http://support.microsoft.com/kb/196776/) Office Automation Using Visual C++  
======================================================================== MICROSOFT FOUNDATION CLASS LIBRARY : Test ======================================================================== AppWizard has created this Test application for you. This application not only demonstrates the basics of using the Microsoft Foundation classes but is also a starting point for writing your application. This file contains a summary of what you will find in each of the files that make up your Test application. Test.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share the project (.dsp) file, but they should export the makefiles locally. Test.h This is the main header file for the application. It includes other project specific headers (including Resource.h) and declares the CTestApp application class. Test.cpp This is the main application source file that contains the application class CTestApp. Test.rc This is a listing of all of the Microsoft Windows resources that the program uses. It includes the icons, bitmaps, and cursors that are stored in the RES subdirectory. This file can be directly edited in Microsoft Visual C++. Test.clw This file contains information used by ClassWizard to edit existing classes or add new classes. ClassWizard also uses this file to store information needed to create and edit message maps and dialog data maps and to create prototype member functions. res\Test.ico This is an icon file, which is used as the application's icon. This icon is included by the main resource file Test.rc. res\Test.rc2 This file contains resources that are not edited by Microsoft Visual C++. You should place all resources not editable by the resource editor in this file. ///////////////////////////////////////////////////////////////////////////// AppWizard creates one dialog cla
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值