Visual C++ 6.0 操作PowerPoint 2003
2008年08月15日 星期五 上午 11:11
主要内容包括:启动、打开、关闭、幻灯片播放、首页、末页、上一页、下一页等。
本代码以PowerPoint 2003为例,其他OFFICE组件及版本方法与此类似。
下面是主要步骤和代码:
1、创建MFC对话框应用程序,在向导的第2步选择automation,其他保持默认即可。
2、在对话框上添加启动、打开、关闭、幻灯片播放、首页、末页、上一页、下一页等按钮及函数。
3、在应用程序的InitInstance()中初始化OLE,代码如下:
4、运用类向导添加PowerPoint类型库,类型库默认在"C:\Program Files\Microsoft Office\Office11\"下,文件名为:msppt.olb。
5、在对话框应用程序的头文件中添加:
#include "msppt.h"
6、在在对话框应用程序的头文件中添加如下变量:
7、在启动按钮函数中添加如下代码:
8、在打开按钮函数中添加如下代码:
9、在关闭按钮函数中添加如下代码:
10、在运行按钮函数中添加如下代码:
11、在翻到首页按钮函数中添加如下代码:
12、在翻到末叶按钮函数中添加如下代码:
13、在翻到前页按钮函数中添加如下代码:
2008年08月15日 星期五 上午 11:11
主要内容包括:启动、打开、关闭、幻灯片播放、首页、末页、上一页、下一页等。
本代码以PowerPoint 2003为例,其他OFFICE组件及版本方法与此类似。
下面是主要步骤和代码:
1、创建MFC对话框应用程序,在向导的第2步选择automation,其他保持默认即可。
2、在对话框上添加启动、打开、关闭、幻灯片播放、首页、末页、上一页、下一页等按钮及函数。
3、在应用程序的InitInstance()中初始化OLE,代码如下:
1 | // Initialize OLE libraries |
2 | if (!AfxOleInit()) |
3 | { |
4 | AfxMessageBox( "Failed to initialize OLE" ); |
5 | return FALSE; |
6 | } |
4、运用类向导添加PowerPoint类型库,类型库默认在"C:\Program Files\Microsoft Office\Office11\"下,文件名为:msppt.olb。
5、在对话框应用程序的头文件中添加:
#include "msppt.h"
6、在在对话框应用程序的头文件中添加如下变量:
01 | _Application app; |
02 | Presentations Presentations; |
03 | _Presentation Presentation; |
04 | SlideShowView View; |
05 | SlideShowWindow SlideShowWindow; |
06 | SlideShowSettings slideshow; |
07 | Slides slides; |
08 | _Slide slide; |
09 | DocumentWindow documentwindow; |
10 | View ActiveView; |
7、在启动按钮函数中添加如下代码:
01 | void CXXXDlg::OnBtnStart() |
02 | { |
03 | // Start PowerPoint and get Application object... |
04 | if (!app.CreateDispatch( "Powerpoint.Application" )) |
05 | { |
06 | AfxMessageBox( "Couldn't start PowerPoint." ); |
07 | } |
08 | else // Make PowerPoint visible and display a message |
09 | { |
10 | app.SetVisible(TRUE); |
11 | TRACE( "PowerPoint is Running!" ); |
12 | } |
13 | } |
8、在打开按钮函数中添加如下代码:
01 | void CXXXDlg::OnBtnOpen() |
02 | { |
03 | static char BASED_CODE szFilter[] = "PowerPoint Files (*.ppt)|*.ppt||" ; |
04 | CFileDialog FileDlg(TRUE, "PPT" ,NULL,OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON |
05 | |OFN_PATHMUSTEXIST,szFilter); |
06 | FileDlg.DoModal(); |
07 |
08 | // To get the selected file's path and name |
09 | CString strFileName; |
10 | strFileName = FileDlg.GetPathName(); |
11 |
12 | if (!strFileName.IsEmpty()) |
13 | { |
14 | Presentations = app.GetPresentations(); |
15 | Presentation = Presentations.Open(strFileName,0,0,1); |
16 | } |
17 | } |
9、在关闭按钮函数中添加如下代码:
1 | void CXXXDlg::OnBtnClose() |
2 | { |
3 | documentwindow=app.GetActiveWindow(); //获得活动的文档 |
4 | documentwindow.Close(); //关闭当前活动的文档 |
5 | if (CanExit()) |
6 | app.Quit(); |
7 | } |
10、在运行按钮函数中添加如下代码:
01 | void CXXXDlg::OnBtnRun() |
02 | { |
03 | Presentations = app.GetActivePresentation(); |
04 | slides = Presentation.GetSlides(); |
05 | // Show the first slide of the presentation |
06 | slide = slides.Item(COleVariant(( long )1)); |
07 |
08 | //Run the show |
09 | slideshow = Presentation.GetSlideShowSettings(); |
10 | slideshow.Run(); |
11 | } |
11、在翻到首页按钮函数中添加如下代码:
1 | void CXXXDlg::OnBtnFirst() |
2 | { |
3 | Presentation = app.GetActivePresentation(); |
4 | SlideShowWindow = Presentation.GetSlideShowWindow(); |
5 | View = SlideShowWindow.GetView(); |
6 | View.First(); |
7 | } |
12、在翻到末叶按钮函数中添加如下代码:
1 | void CXXXDlg::OnBtnLast() |
2 | { |
3 | Presentation = app.GetActivePresentation(); |
4 | SlideShowWindow = Presentation.GetSlideShowWindow(); |
5 | View = SlideShowWindow.GetView(); |
6 | View.Last(); |
7 | } |
13、在翻到前页按钮函数中添加如下代码:
1 | void CXXXDlg::OnBtnPrevious() |
2 | { |
3 | Presentation = app.GetActivePresentation(); |
4 | SlideShowWindow = Presentation.GetSlideShowWindow(); |
5 | View = SlideShowWindow.GetView(); |
6 | View.Previous(); |
7 | } |
14、在翻到下页按钮函数中添加如下代码:
1 | void CXXXDlg::OnBtnNext() |
2 | { |
3 | Presentation = app.GetActivePresentation(); |
4 | SlideShowWindow = Presentation.GetSlideShowWindow(); |
5 | View = SlideShowWindow.GetView(); |
6 | View.Next(); |
7 | } |
15.获得幻灯片总数
1 | void CXXXDlg::OnBtnGetSlidesCount() |
2 | { |
3 | Presentations=app.GetActivePresentation(); |
4 | slides=Presentation.GetSlides(); |
5 | long endpos=slides.GetCount(); //获得幻灯片总数 |
6 | } |
16.获得当前幻灯片序号
1 | void CXXXDlg::OnBtnGetCurrentPosition() |
2 | { |
3 | Presentation=app.GetActivePresentation(); |
4 | SlideShowWindow=Presentation.GetSlideShowWindow(); |
5 | View=SlideShowWindow.GetView(); |
6 | long Curpos=View.GetCurrentShowPosition(); //当前幻灯片序号 |
7 | } |
链接2:http://support.microsoft.com/kb/254009/
这个例子作用是通过程序打开并放映PPT、结束放映、退出程序。
在放映的时候我们就可以获取信息了,可以用OnTimer解决了.
SlideShowView类中的GetCurrentShowPosition函数可以获得当前页码,
其他的就找相关的类查询吧,要获得标题什么的要用到_slide的GetShape函数,返回shapes类型,shapes里面自己选择,比如里面的GetTitle可以获得标题的shape, 再通过Shape的GetTextFrame函数, TextFrame的GetTextRange函数,最后 TextRange的GetText就获得标题的文字信息了