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