wps使用xml文件显示ui
功能区xml显示图标
xml文件的属性和方法
属性或方法 | 返回值 | 描述 |
---|---|---|
xmlns | String | 必须使用 “http://schemas.microsoft.com/office/2006/01/customui” |
onLoad | callback | 再功能区加载的时候,将功能区参数传递给回调函数 |
loadImage | callback | 实现loadImage函数可以使用用户自定义的图片 |
xml示例
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad"><ribbon><tabs><tab idMso="TabAddIns"><group id="MyGroup"label="My Group"></group></tab></tabs></ribbon>
</customUI>
元素 | 描述 |
---|---|
customUi | 表示自定义的功能区 |
ribbon | 表示功能区 |
tabs | 表示功能区选项卡组 |
tab | 表示单个功能区选项卡 |
group | 表述功能区选项卡上的控件组 |
特性 | 父元素 | 描述 |
---|---|---|
onLoad | customUi | 标识应用程序加载功能区时调用的方法 |
idMso | tab | 表示显示在功能区中的内置选项卡 |
id | group | 表示组的id |
label | group | 指定在组上显示的名字(wps现在不显示下方的id名字) |
功能区类引用
方法 | 描述 |
---|---|
GetCustomUi | 返回功能区xml文件的内容。wps调用这个方法用与获取用户界面的XML字符串。 |
OnLoad | 将IRibbonControl参数分配给Ribbon字段,此字段可以用来更新自定义功能区 |
使用xml布局的流程
编写xml文件
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load"><ribbon startFromScratch="false"><tabs><tab id="DocumentAssistant" label="公文助手"><group id="SampleGroup1" label="def1"><button id="DBCToSBCBtn" label="半角转全角" onAction="DBCToSBC" imageMso="HappyFace"/></group></tab></tabs></ribbon>
</customUI>
对xml文件的解释
tab一行中,label代表选项卡在整个选项卡组中的名字,使用id标签对选项卡进行标识。如果使用idMso则代表是默认选项卡,像文章开始的xml那样表示的是加载项选项卡。每个group代表的是一组控件,一组控件的分割在wps现实中使用|
标识。在每一个group中可以添加按钮,按钮的id由用户设定,label代表按钮在选项卡中显示的文字,onAction代表触发的方法,imageMso代表使用系统自带的图标,上文中的xml文件中的HappyFace就是系统图标。
第一步:实现GetCustomUi接口
GetCustomUi接口定义
virtual /* [helpcontext][id] */ HRESULT GetCustomUI(/* [in] */ BSTR RibbonID,/* [retval][out] */ BSTR *RibbonXml);
实现GetCustomUI接口
HRESULT CWpsComPlugins::GetCustomUI(/* [in] */ BSTR RibbonID,/* [retval][out] */ BSTR *RibbonXml)
{if (!RibbonXml)return E_INVALIDARG;QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));QString xmlPath = QString::fromLocal8Bit("/root/下载/qt-project/InProcessComPlugin/ribbon.xml");QFile file(xmlPath);file.open(QIODevice::ReadOnly|QIODevice::Text);QString str("");while (!file.atEnd()) {str += file.readLine();}file.close();const WCHAR* const cszXml = str.utf16();*RibbonXml = ::SysAllocString(cszXml);return S_OK;
}
编译运行项目,将生成的动态链接库放入到wps中的wpsplugins文件夹中,会显示如下图所示
第二部:使用用户自定义的图片
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" loadImage="GetImage">
<!-- Later in the markup --><button id="myButton" image="mypic.jpg" />
在customUI一行中填写loadImage标签,并实现GetImage函数,之后再button中添加image标签,写入图片地址即可使用自定义图片。
注意:自定义图片大小要1616,large图标为3232
GetImage回调方法必须返回stdole.IPictureDisp类型
RECT& rc = *(RECT*)di.prcBounds;
CComPtr<IPictureDisp> m_picdisp = NULL;//IPictureDisp对象指针
_bstr_t m_bstrImgUrl = "C:\\桌面\\1.bmp";//bmp图片格式的路径
HRESULT hr = NOERROR;
PICTDESC pictDesc;
pictDesc.picType = PICTYPE_BITMAP;
pictDesc.bmp.hbitmap = (HBITMAP)::LoadImage(NULL, m_bstrImgUrl, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);//加载bmp格式的图片
pictDesc.bmp.hpal = nullptr;
pictDesc.cbSizeofstruct = sizeof(PICTDESC);
return m_picdisp
wps使用xml文件显示ui相关推荐
- 如何把 XML 文件显示为 HTML 表格
如何把 XML 文件显示为 HTML 表格 <html> <head> <script type="text/javascript"> var ...
- IDEA Maven项目中,pom.xml文件显示为橘红色普通xml文件,将pom文件变为蓝色图标
一.创建Maven项目后,pom.xml显示为橘红的普通文件,可能是IDEA没有识别 二.如果可以依赖可以正常导入,文件还是显示为橘色,可能是开启了节能模式导致的 这时候取消勾选Power Save ...
- xml配置文件显示为文本文件问题
idea 新建的xml文件显示为文本问题 原因: 由于新建不带后缀名的文件的时候 idea会相对智能的让你选择 文件规则 解决: settings->File types 中找到对应的文件类型显 ...
- android xml 加载错误提示,加载uixml文件失败 打开wps时显示“加载XML文件失败1
打开wps时显示"加载XML文件失败." 打开wps时显示"加载XML文件失败1 关闭所有打开的Word文档: 开始 → 运行 → 粘贴上面复制的命令 → 确定. 在打开 ...
- ASP.NET中自动生成XML文件并通过XSLT显示在网页中的方法
XML是一种很方便的描述数据的方法,其格式也比较接近HTML,因此就有了想把XML直接通过网页的形式显示在浏览器中的想法.但是直接打开XML文件,浏览器是无法解析的,只是把文档的结构原封不动地呈现出来 ...
- IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
具体表现为:新建maven工程后,pom.xml文件内容显示为灰色,具体内容无法识别.如下: 原因分析: idea无法识别xml文件. 解决步骤: 1.选择File->Settings: 2.选 ...
- html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...
本文实例讲述了JS读取XML文件数据并以table形式显示数据的方法.分享给大家供大家参考,具体如下: 先看xml文件: 张秋丽 女 18 李文才 男 31 李斯文 男 22 马英 女 25 孙红雷 ...
- html用dom显示xml,html DOM文件引用一个XML文件将不会在浏览器中打印
我完全不熟悉这一点,我正在上课,现在变成了一个令人头疼的问题.我有这个HTML DOM文件,它引用了一个XML文件,我需要在浏览器中显示在屏幕上.它应该只打印标题,标题,第一个,最后一个,位置,描述的 ...
- html xsl xml文件,用XSL显示XML文件看起来像HTML
我是标记语言的新手,需要显示HTML表格,将其转换为XML,然后使用与HTML相同的XSL显示它.下面是一些HTML表格:用XSL显示XML文件看起来像HTML cellpadding="5 ...
最新文章
- abap submit 的使用方法
- 栈结构功能实现的伪码展示【数据结构F】
- 数组长度属性以及JavaScript中的示例
- Linux设备驱动:DMA 接口API
- android游戏开发方向初探
- 怎样保存html视频,网页上的视频怎么保存到电脑 网页视频保存到电脑的步骤教程...
- Sentinel控制台搭建使用
- Spark程序编译报错error: object apache is not a member of package org
- WPF 可视化树和逻辑树
- 时间子系统10_hpet时钟初始化
- cocoscreator初学笔记001
- Linux环境部署Node.js
- 软件测试--MonkeyRunner(3)
- revi怎么弄插件能够使附件发生一定角度的旋转?
- DirectX 因素:模拟合成器的仿真
- 红色商务年终总结PPT模板
- 易灵思T35 FPGA驱动LVDS显示屏
- python实现图片切九宫格拼图
- 计算机专业答辩讲什么,计算机专业毕业论文答辩的程序讲解
- 建行积分商城 android,建行积分商城“兑”你更好
热门文章
- java poker_Java超级高手成长之路!一个Java编写的斗地主游戏
- HP存储2000FC基础操作方法
- 06世界杯8强备忘录
- 【C语言入门】将十元钱兑换成一元,五角,一角的硬币,共计40枚,计算有多少中兑换方法
- R16开发板tina系统LCD调试
- 李彦宏百度联盟十周年演讲实录
- 北大联合腾讯发布泛在操作系统研究报告:泛在操作系统成产业趋势,研究与实践进入加速期...
- 无法打开文件“libboost_thread-vc140-mt-1_63.lib”
- JS模块化(node.js模块化和es6模块化)
- 海康摄像头与萤石云web集成记录