Dieser Artikel beschreibt die Microsoft PowerPoint mithilfe von Visual C++ 5.0 oder Visual C++ 6.0 mit The Microsoft Foundation Classes (MFC) automatisieren.
Mithilfe der Automatisierung in PowerPoint können Sie programmgesteuert drucken, Folien anzeigen und führen Sie die meisten der Möglichkeiten interaktiv. Gehen Sie folgendermaßen erstellen und Ausführen des Beispiels Automatisierung vor:
Erstellen Sie ein neues dialogfeldbasierte MFC-Projekt.
Die fügen Sie Schaltfläche das Dialogfeld und ein BN_CLICKED-Handler dafür hinzu.
Klassen-Assistent (STRG + W) öffnen Sie, klicken Sie auf die Registerkarte Automatisierung , klicken Sie auf Klasse hinzufügen und wählen Sie aus einem Bibliothek Typ .
Gehen Sie zu dem Verzeichnis, in dem Sie Office (z. B. c:\Programme\Microsoft Office\Office) installiert und wählen Sie Msppt8.olb . Die PowerPoint-Objekt Bibliothek für PowerPoint 2000 heißt Msppt9.olb. Die PowerPoint-Objekt Bibliothek für PowerPoint 2002 ist msppt.olb und befindet, wird standardmäßig im Ordner c:\Programme\Microsoft c:\Programme\Microsoft Office\Office10. Die PowerPoint-Objekt Bibliothek für Microsoft Office PowerPoint 2003 ist msppt.olb, und befindet, wird standardmäßig im Ordner c:\Programme\Microsoft Office\Office11 Ordner
Wählen Sie alle gefundenen Klassen, und klicken Sie auf OK , um zum Projekt zurückzukehren. Klassen-Assistent hat einige Automatisierung "Wrapper Classes" aus der PowerPoint-Typ-Bibliothek generiert und erstellt die Dateien Msppt8.h und Msppt8.cpp.
Fügen Sie den folgenden Code hinzu-Handler der Schaltfläche:
// 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();
Fügen Sie unmittelbar vor der Implementierung Ihrer Schaltflächenhandler folgende Zeilen hinzu:
#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;
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 222960
(http://support.microsoft.com/kb/222960/en-us/
)
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Bitte geben Sie Ihr Feedback zu diesem Artikel ab
Hat dieser Artikel bei der Lösung Ihres Problems geholfen?
Ja
Nein
Ich weiß nicht
Waren die Informationen für Ihr Problem relevant?
Ja
Nein
Wie könnte man den Artikelinhalt verbessern?
Hinweis: Leider können wir keine Kommentare persönlich beantworten.
Danke! Dieses Feedback hilft uns dabei, die Supportartikel weiter zu verbessern. Weitere Informationen finden Sie auf der Hilfe und Support-Startseite.