使用RibbonX在ppt中插入按钮-创新互联

一、在Ribbon功能区上自定义界面 1.1Ribbon简介

在Office 2007中,Microsoft使用了称作Ribbon的全新界面,Ribbon对应的部分如下图的1区域,它包括以下部分:Office Button(按钮,区域2), Quick Access(快速访问工具栏,区域3), Tabs(选项卡,区域4), Contextual Tabsets(上下文标签集,区域5), Groups Tabs(组选项卡,区域6)

在遵义等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作按需策划设计,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站建设,外贸网站制作,遵义网站建设费用合理。

1.2初识RibbonX

RibbonX是一种供开发者或最终用户定制功能区的方法,即功能区的可编程机制。功能区(Ribbon)是Office 2007应用程序界面的一部分,而RibbonX是指通过使用XML为自定义的应用程序来创建功能区元素(组件)的编程接口。

1.3实现接口IRibbonExtensibility

IRibbonExtensibility定义在Office类型库中,该类型库的id为{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52},在头文件开头处导入类型库

C++

#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" version("2.5") auto_rename auto_search raw_interfaces_only rename_namespace("Office")

该接口只有一个函数,重写GetCustomUI,该函数主要用来加载自定义界面XML文件,通过出参RibbonXml获取xml中的内容。

涉及太多COM内容,用法可以参考资料:https://blog.csdn.net/u011304970/article/details/72863693

1.4XML中各元素的用法
  1. 在开始前插入新的Test选项卡,并在Groups Tabs中添加按钮

XML

    

        

xmlns为命名空间,其中包含所有元素名字的定义

tab元素中的属性insertBeforeMso 作用是在指定的idMso前插入选项卡,tab所有的属性可以在以下网站找到:

[MS-CUSTOMUI]: tab (Tab) | Microsoft Learn

TabHome为开始选项卡的idMso,所有idMso可以在以下网站找到:

[MS-CUSTOMUI]: PowerPoint 2007 | Microsoft Learn

imageMso是office自带的图片资源

onAction中的字符串是点击按钮时调用的函数,需要在工程代码中定义

  1. 在Office Button中插入菜单项和二级菜单(office2009后没法使用)

HTML

其他元素用法可以参考:https://blog.csdn.net/nodeman/article/details/79419386

  1. 可以使用CustomUIEditor.exe验证XML的内容格式是否正确
  2. 先创建一个ppt,然后用CustomUIEditor.exe打开
  3. 输入xml内容,完毕后点击左上角第四个按钮进行验证

  1. 保存后直接打开该PPT就能看到自定义的界面效果
  2. 有些元素是在office2009之后才有用,比如contextMenus,可以通过Insert进行选中

1.5在xml中使用回调

每个元素都有属于自身的回调方法,button元素可以使用onAction进行回调,以下尝试对一个按钮

使用GetEnabled回调

xml内容如下:

HTML

    

        

在接口文件.idl中添加,其中回调函数的定义在以下网页中:

https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/aa722523(v=office.12)

C++

interface IConnect : IDispatch

{

......

HRESULT GetEnabled([in]IDispatch* ribbtonControl, [out, retval] VARIANT_BOOL *pvarfEnabled);

};

在插件类头文件.h中加入

C++

//IConnect 实现

......

virtual HRESULT __stdcall GetEnabled(IDispatchribbtonControll, VARIANT_BOOL *pvarfEnabled);

源文件中添加定义

C++

HRESULT __stdcall CKisOfficeAddin::GetEnabled(IDispatch* ribbtonControll, VARIANT_BOOL *pvarfEnabled)

{

*pvarfEnabled = VARIANT_FALSE;

return S_OK;

}

效果如下:

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前题目:使用RibbonX在ppt中插入按钮-创新互联
本文链接:http://pwwzsj.com/article/dhcepc.html