VS2010操作PPT

个人的电脑环境是Win7 64bit,VS2010,Office2013

打开VS2010,文件>新建>项目,项目名称PPT,




这里选择了“自动化”,这个是很重要的,因为我们现在要开发的就是Office自动化程序,勾选这个选项之后引导程序会在代码中添加相关的初始化代码。点击完成.

删除默认的“确定”,“取消”和静态文本框控件,添加5个按钮,并将Caption和ID修改为下面的内容


界面如下:


准备工作完成。


下面引入操作PPT所需的库。左下角切换到“类视图”,然后项目>添加类


选择TypeLib中的MFC,添加


从注册表中添加类,可用的类型库中选择Microsoft PowerPoint 15.0 Object Library<2.b>,添加下图所示的6个接口,这里只实现PPT的打开,播放,前后翻页等功能,不需要将所有接口都添加进去。


其中左边“接口”和右边“生成的类”的对应关系如下:

_Application

CApplication

_Presentation

CPresentation

Presentations

CPresentations

SlideShowSettings

CSlideShowSettings

SlideShowView

CSlideShowView

SlideShowWindow

CSlideShowWindow

完成之后如下图:


在上面的CPPTDlg上右键>添加>添加变量,添加CApplication类型的变量App,权限为private.此时PPTDlg.h中自动添加

#include "capplication.h"

并且在最后声明了刚才添加的变量

private:

    CApplicationApp;

这时按Ctrl+F5运行程序,这时会提示有很多错误,类似下面的:


双击CApplication这个类,将下面的代码注释掉。

#import "C:\\Program Files\\MicrosoftOffice\\Office15\\MSPPT.OLB" no_namespace

然后再Ctrl+F5就没有错误。

同样的方法添加其他5个变量,完成之后PPTDlg.h中应该有如下内容:

private:

    CApplicationApp;

    CPresentationsPresentations;

    CPresentationPresentation;

    CSlideShowViewSlideShowView;

    CSlideShowWindowSlideShowWindow;

    CSlideShowSettingsSlideShowSettings;

注意:

1. 需要将每个类中那句#import注释掉

2.如果添加成员变量不是通过“添加成员变量向导”添加,而是直接在CPPTDlg.h后面输入,这时还需要包含对应类的头文件,即在PPTDlg.h开头写如下代码

#include "capplication.h"

#include "cpresentations.h"

#include "cpresentation.h"

#include "cslideshowview.h"

#include "cslideshowwindow.h"

#include "cslideshowsettings.h"


在PPTDlg的OnInitDialog()的return之前添加下面的初始化语句

    if(!App.CreateDispatch("Powerpoint.Application",NULL)){

        MessageBox("无法启动PPT");

    }

然后就是各个按钮的响应代码,如下:

void CPPTDlg::OnBnClickedOpen()
{
	//MessageBox("打开 被按下");
    static char BASED_CODE szFilter[] = "PowerPoint Files (*.ppt)|*.ppt||";
    CFileDialog FileDlg(TRUE,"PPT",NULL,OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON
		|OFN_PATHMUSTEXIST,szFilter);
    FileDlg.DoModal();
	
    CString FileName;
    FileName = FileDlg.GetPathName();
	
    if(!FileName.IsEmpty())
    {
		Presentations = App.get_Presentations();
        Presentation = Presentations.OpenOld(FileName,0,0,1);	
    }
}


void CPPTDlg::OnBnClickedPlay()
{
	SlideShowSettings = Presentation.get_SlideShowSettings();
	SlideShowSettings.Run();
}


void CPPTDlg::OnBnClickedPre()
{
	SlideShowWindow = Presentation.get_SlideShowWindow();
	SlideShowView = SlideShowWindow.get_View();
	SlideShowView.Previous();
}


void CPPTDlg::OnBnClickedNext()
{
	SlideShowWindow = Presentation.get_SlideShowWindow();
	SlideShowView = SlideShowWindow.get_View();
	SlideShowView.Next();
}


void CPPTDlg::OnBnClickedExit()
{
	if(App.m_lpDispatch!=NULL){
		App.Quit();
		App.ReleaseDispatch();
		if (CanExit())
		CDialogEx::OnOK();
	}
	if (CanExit())
	CDialogEx::OnOK();		
}

注:在退出响应函数中那样写的目的是退出PPT的同时退出应用程序

程序运行时360会拦截,原因未知,个人猜测是由于项目引导程序中选择“自动化”引起的,因为其他程序没有被拦截。

源码下载地址:源码下载











  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值