ID do artigo: 308336 - Última revisão: sexta-feira, 29 de junho de 2007 - Revisão: 5.3

Como usar a automação para criar e para mostrar uma apresentação do PowerPoint 2000 ou uma apresentação do PowerPoint 2002 usando o Visual C++ .NET 2002 ou Visual C++ .NET 2003 e Microsoft Foundation Classes

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 303717  (http://support.microsoft.com/kb/303717/ ) .
Para obter uma Microsoft translation from VPE for Csharp .NET versão deste artigo, consulte 303718  (http://support.microsoft.com/kb/303718/ ) .

Nesta página

Expandir tudo | Recolher tudo
Observação Microsoft Visual C++ .NET 2002 e Microsoft Visual C++ .NET 2003 oferecem suporte o modelo de código gerenciado fornecido pelo Microsoft .NET Framework e o modelo de código do Windows de Microsoft nativo não gerenciado. As informações neste artigo se aplicam somente ao código do Visual C++ não gerenciado.

Sumário

Este artigo descreve como usar a automação para criar e para mostrar uma apresentação do Microsoft PowerPoint 2000 ou uma apresentação do PowerPoint 2002 usando o Microsoft Visual C++ .NET 2002 ou Visual C++ .NET 2003 e Microsoft Foundation Classes.

Mais Informações

Criar o exemplo de automação

  1. Siga as etapas na seção "Criar um cliente de automação" do seguinte artigo da Base de dados de Conhecimento da Microsoft para criar um cliente de automação básico:
    307473  (http://support.microsoft.com/kb/307473/ ) Como usar uma biblioteca de tipos para automação do Office do Visual C++ .NET
    Na etapa 4 do artigo, selecione a biblioteca de tipos Microsoft PowerPoint e a biblioteca de tipos Do Microsoft Graph . O local padrão para o PowerPoint 2000 é C:\Program Files\Microsoft Office\Office\Msppt9.olb, o local padrão para o PowerPoint 2002 é C:\Program Files\Microsoft Office\Office10\Msppt.olb e o local padrão para o Microsoft Office PowerPoint 2003 é C:\Program Files\Microsoft Office\Office11\Msppt.olb. O local padrão para Graph 2000 é C:\Program Files\Microsoft Office\Office\graph9.olb, o local padrão para o gráfico 2002 é C:\Program Files\Microsoft Office\Office10\Graph.exe e o local padrão para o gráfico 2003 é C:\Program Files\Microsoft Office\Office11\Graph.exe. Em seguida, selecione PowerPoint seguinte interfaces:
    • _Application
    • _Presentation
    • _Slide
    • fonte
    • OleFormat
    • apresentações
    • ShadowFormat
    • forma
    • formas
    • SlideRange
    • slides
    • SlideShowSettings
    • SlideShowTransition
    • SlideShowWindows
    • TextFrame
    • TextRange
    Selecione a seguinte interface gráfico:
    • gráfico

    Na etapa 6, adicione as seguintes instruções # include para Autoprojectdlg.cpp:
    #include "CApplication.h"
    #include "CPresentations.h"
    #include "CPresentation.h"
    #include "CSlides.h"
    #include "CSlide.h"
    #include "CShapes.h"
    #include "CShape.h"
    #include "CTextFrame.h"
    #include "CTextRange.h"
    #include "CFont0.h"
    #include "COleFormat.h"
    #include "CChart.h"
    #include "CShadowFormat.h"
    #include "CSlideShowTransition.h"
    #include "CSlideRange.h"
    #include "CSlideShowSettings.h"
    #include "CSlideShowWindows.h"
    					
  2. Na caixa de diálogo IDD_AUTOPROJECT_DIALOG , clique com o botão direito do mouse em Executar e selecione Adicionar manipulador de eventos . Em eventos manipulador assistente, selecione o tipo de mensagem BN_CLICKED e clique em Adicionar e editar .
  3. Substitua o código a seguir
    void CAutoProjectDlg::OnBnClickedRun()
    {
    	// TODO: Add your control notification handler code here
    }
    					
    com:
    void CAutoProjectDlg::OnBnClickedRun()
    {
    	CApplication pptApp;
    	CPresentations pptPresentations;
    	CPresentation pptPresentation;
    	CSlides pptSlides;
    	LPDISPATCH pdisptemp = NULL;
    
    
    	//Template for the PowerPoint presentation.
    	const CString strPresentationTemplate("C:\\Program Files\\Microsoft "\ 
    		"Office\\Templates\\Presentation Designs\\Blends.pot");
    
    	//Bmp to put on slide.
    	const CString strPicture("C:\\WINNT\\Soap Bubbles.bmp");
    
    
    	//Automate PowerPoint and get a reference to the
    	//PowerPoint.Application object.
    	if(!pptApp.CreateDispatch("PowerPoint.Application"))
    	{
    		AfxMessageBox("Couldn't start PowerPoint and get Application object.");
    		return;
    	}
    	else
    	{
    		//Make the application visible. 
    		pptApp.put_Visible(TRUE);
    
    		//Get the Presentations collection.
    		pptPresentations =  pptApp.get_Presentations();
    
    		//Open a presentation based on the template.
    		pptPresentation = pptPresentations.Open(strPresentationTemplate, FALSE,
    			TRUE ,TRUE);
    
    		//Get the slides.
    		pptSlides = pptPresentation.get_Slides();
    
    
    		//Build Slide #1:
    		{
    			//PowerPoint.PpSlideLayout.ppLayoutTitleOnly = 11
    			CSlide pptSlide(pptSlides.Add(1,11)); 
    			CShapes slideshapes(pptSlide.get_Shapes());
    			COleVariant varindex(1L);
    			CShape slideshape(slideshapes.Item(varindex));
    			CTextFrame txtFrame(slideshape.get_TextFrame());
    			CTextRange txtrange(txtFrame.get_TextRange());
    
    			//Add text to the slide and format the text.
    			txtrange.put_Text("My Sample Presentation");
    
    			CFont0 objFont(txtrange.get_Font());
    			objFont.put_Name("Comic Sans MS");
    			objFont.put_Size(48);
    
    			//Add the picture to the slide.
    			pdisptemp = slideshapes.AddPicture(strPicture,FALSE, TRUE, 150,
    				150, 500, 350);
    			pdisptemp->Release();
    
    		}
    
    
    		//Build Slide #2:
    		{
    			//PowerPoint.PpSlideLayout.ppLayoutTitleOnly = 11
    			CSlide pptSlide(pptSlides.Add(2,11));  
    			CShapes slideshapes(pptSlide.get_Shapes());
    
    			COleVariant varindex(1L);
    			CShape slideshape(slideshapes.Item(varindex));
    			CTextFrame txtFrame(slideshape.get_TextFrame());
    			CTextRange txtrange(txtFrame.get_TextRange());
    
    			//Add and format text.
    			txtrange.put_Text("My Chart");
    			CFont0 objFont(txtrange.get_Font());
    			objFont.put_Name("Comic Sans MS");
    			objFont.put_Size(48);
    
    			//Add a third pie chart. 
    			CShape slideshape1(slideshapes.AddOLEObject(150,150,480,
    				320,"MSGraph.Chart",NULL,NULL,NULL,NULL,NULL,NULL));
    
    			COLEFormat oleformat(slideshape1.get_OLEFormat());
    			CChart objchart(oleformat.get_Object());
    			objchart.put_ChartType(-4102); // xl3dPie = -4102
    
    		}
    
    		//Build Slide #3:
    		{
    			//Add a text effect to the slide and apply shadows to 
    			//the text effect.
    			//PowerPoint.PpSlideLayout.ppLayoutBlank = 12
    			CSlide pptSlide(pptSlides.Add(3,12));  
    			pptSlide.put_FollowMasterBackground(FALSE);
    
    			CShapes slideshapes(pptSlide.get_Shapes());
    
    			CShape slideshape(slideshapes.AddTextEffect(26,"The End",
    				"Impact",96,FALSE, FALSE,239,200)); //msoTextEffect27 = 26
    			CShadowFormat objShadowFormat(slideshape.get_Shadow()); 
    			objShadowFormat.put_OffsetX(3);
    			objShadowFormat.put_OffsetY(3);
    		}
    
    
    
    		//Modify the slide show transition settings for all 3 slides in
    		//the presentation.
    		for(long count= 1; count <=3 ; count++)
    		{
    			COleVariant varindex(count);
    
    			CSlideRange objslideRange(pptSlides.Range(varindex));
    
    			CSlideShowTransition objSlideshowTransition(
    				objslideRange.get_SlideShowTransition());
    
    			objSlideshowTransition.put_AdvanceOnTime(TRUE);
    			objSlideshowTransition.put_AdvanceTime(3);
    			objSlideshowTransition.put_EntryEffect(3073); //ppEffectBoxOut = 3073
    		}
    
    		CSlideShowSettings objslideshowsettings(
    			pptPresentation.get_SlideShowSettings());
    		objslideshowsettings.put_StartingSlide(1);
    		objslideshowsettings.put_EndingSlide(3);
    
    
    		pdisptemp = objslideshowsettings.Run();
    		pdisptemp->Release();
    		pdisptemp = NULL;
    
    		//Run the slide show and wait for the slide show to end.
    		CSlideShowWindows objSlideShowWindows(pptApp.get_SlideShowWindows());
    		//Do some idle time processing while the show finishes.
    		while(objSlideShowWindows.get_Count() >= 1)
    		{
    			MSG msg;
    			if (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
    			{
    				TranslateMessage(&msg);
    				DispatchMessage(&msg);
    			}
    		}
    
    
    		//Close the presentation without saving changes and quit PowerPoint.
    		pptPresentation.put_Saved(TRUE);
    		pptPresentation.Close();
    		pptApp.Quit();
    	}
    }
    					
    anotação modificar as constantes strPresentationTemplate e strPicture para apontar para o nome de arquivo e caminho completo do PowerPoint modelo e uma imagem.

  4. Pressione F5 para compilar e executar o programa.
  5. Clique no botão Executar para iniciar o PowerPoint, crie a apresentação e executar a apresentação de slides.

Referências

Para obter mais informações, consulte o seguinte Microsoft Developer site Network (MSDN):
Microsoft Office Development com Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Foundation Class Library 4.2
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbautomation kbhowto KB308336 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 308336  (http://support.microsoft.com/kb/308336/en-us/ )