使用RibbonX在ppt中插入按钮-创新互联
在Office 2007中,Microsoft使用了称作Ribbon的全新界面,Ribbon对应的部分如下图的1区域,它包括以下部分:Office Button(按钮,区域2), Quick Access(快速访问工具栏,区域3), Tabs(选项卡,区域4), Contextual Tabsets(上下文标签集,区域5), Groups Tabs(组选项卡,区域6)
在遵义等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作按需策划设计,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站建设,外贸网站制作,遵义网站建设费用合理。1.2初识RibbonXRibbonX是一种供开发者或最终用户定制功能区的方法,即功能区的可编程机制。功能区(Ribbon)是Office 2007应用程序界面的一部分,而RibbonX是指通过使用XML为自定义的应用程序来创建功能区元素(组件)的编程接口。
1.3实现接口IRibbonExtensibilityIRibbonExtensibility定义在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中各元素的用法- 在开始前插入新的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中的字符串是点击按钮时调用的函数,需要在工程代码中定义
- 在Office Button中插入菜单项和二级菜单(office2009后没法使用)
HTML |
其他元素用法可以参考:https://blog.csdn.net/nodeman/article/details/79419386
- 可以使用CustomUIEditor.exe验证XML的内容格式是否正确
- 先创建一个ppt,然后用CustomUIEditor.exe打开
- 输入xml内容,完毕后点击左上角第四个按钮进行验证
- 保存后直接打开该PPT就能看到自定义的界面效果
- 有些元素是在office2009之后才有用,比如contextMenus,可以通过Insert进行选中
每个元素都有属于自身的回调方法,button元素可以使用onAction进行回调,以下尝试对一个按钮
使用GetEnabled回调
xml内容如下:
HTML imageMso="WebPagePreview" size="large" label="测试按钮" getEnabled="GetEnabled"/> |
在接口文件.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://hbruida.cn/article/dhcepc.html