PowerPoint automatiseren met Visual C++ 5. 0 of Visual C++ 6. 0 en de Microsoft Foundation Classes

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 222960 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Samenvatting

In dit artikel wordt beschreven hoe u Microsoft automatiseren PowerPoint met behulp van Visual C++ 5. 0 of Visual C++ 6. 0 met Microsoft Foundation Classes (MFC).

Meer informatie

Met behulp van automatisering in PowerPoint kunt u programmatisch afdrukken, weer geven van dia's en het gros van de dingen die u interactief kunt doen. Ga als volgt te werk om te bouwen en de automatisering van het voorbeeld uitvoeren:
  1. Maak een nieuw dialoog venster gebaseerd MFC EXE-project.
  2. Een knop toevoegen aan uw dialoog venster en een BN_CLICKED-handler voor deze.
  3. OpenClassWizard(Ctrl + W), klikt u op deAutomatiseringen klik opKlasse toevoegen, en selecteerVan een typebibliotheek.
  4. Ga naar de map waarin Office (voor is geïnstalleerd bijvoorbeeld: C:\Program Files\Microsoft Office\Office) en kiesMsppt8.olb. De naam van de PowerPoint-objectbibliotheek voor PowerPoint 2000 Msppt9. olb. de PowerPoint-objectbibliotheek voor PowerPoint 2002 is Msppt.olb, en het bevindt zich standaard in de map c:\Program Files\Microsoft Office\Office10. map. De objectbibliotheek van PowerPoint voor Microsoft Office PowerPoint 2003 is Msppt.olb, en bevindt zich standaard in de map c:\Program Files\Microsoft Office\Office11. map
  5. Selecteer alle klassen worden gevonden en klik opOKu kunt teruggaan naar uw project. ClassWizard heeft sommige gegenereerd. "wrapperklassen" vanuit de PowerPoint-typebibliotheek en wordt gemaakt de bestanden Msppt8.h en Msppt8.cpp.
  6. Voeg de volgende code naar de knop-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\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. Voeg de volgende regels voordat u de uitvoering van de knop-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. Compileren en uitvoeren.

Referenties

Voor meer informatie over het automatiseren van Microsoft Office-toepassingen vanuit Visual C++, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
196776Office Auto mat ion met behulp van Visual C++

Eigenschappen

Artikel ID: 222960 - Laatste beoordeling: donderdag 6 oktober 2011 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Foundation Class Library 4.2
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
Trefwoorden: 
kbautomation kbhowto kbmt KB222960 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:222960

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com