功能区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相关推荐

  1. 如何把 XML 文件显示为 HTML 表格

    如何把 XML 文件显示为 HTML 表格 <html> <head> <script type="text/javascript"> var ...

  2. IDEA Maven项目中,pom.xml文件显示为橘红色普通xml文件,将pom文件变为蓝色图标

    一.创建Maven项目后,pom.xml显示为橘红的普通文件,可能是IDEA没有识别 二.如果可以依赖可以正常导入,文件还是显示为橘色,可能是开启了节能模式导致的 这时候取消勾选Power Save ...

  3. xml配置文件显示为文本文件问题

    idea 新建的xml文件显示为文本问题 原因: 由于新建不带后缀名的文件的时候 idea会相对智能的让你选择 文件规则 解决: settings->File types 中找到对应的文件类型显 ...

  4. android xml 加载错误提示,加载uixml文件失败 打开wps时显示“加载XML文件失败1

    打开wps时显示"加载XML文件失败." 打开wps时显示"加载XML文件失败1 关闭所有打开的Word文档: 开始 → 运行 → 粘贴上面复制的命令 → 确定. 在打开 ...

  5. ASP.NET中自动生成XML文件并通过XSLT显示在网页中的方法

    XML是一种很方便的描述数据的方法,其格式也比较接近HTML,因此就有了想把XML直接通过网页的形式显示在浏览器中的想法.但是直接打开XML文件,浏览器是无法解析的,只是把文档的结构原封不动地呈现出来 ...

  6. IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色

    具体表现为:新建maven工程后,pom.xml文件内容显示为灰色,具体内容无法识别.如下: 原因分析: idea无法识别xml文件. 解决步骤: 1.选择File->Settings: 2.选 ...

  7. html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...

    本文实例讲述了JS读取XML文件数据并以table形式显示数据的方法.分享给大家供大家参考,具体如下: 先看xml文件: 张秋丽 女 18 李文才 男 31 李斯文 男 22 马英 女 25 孙红雷 ...

  8. html用dom显示xml,html DOM文件引用一个XML文件将不会在浏览器中打印

    我完全不熟悉这一点,我正在上课,现在变成了一个令人头疼的问题.我有这个HTML DOM文件,它引用了一个XML文件,我需要在浏览器中显示在屏幕上.它应该只打印标题,标题,第一个,最后一个,位置,描述的 ...

  9. html xsl xml文件,用XSL显示XML文件看起来像HTML

    我是标记语言的新手,需要显示HTML表格,将其转换为XML,然后使用与HTML相同的XSL显示它.下面是一些HTML表格:用XSL显示XML文件看起来像HTML cellpadding="5 ...

最新文章

  1. abap submit 的使用方法
  2. 栈结构功能实现的伪码展示【数据结构F】
  3. 数组长度属性以及JavaScript中的示例
  4. Linux设备驱动:DMA 接口API
  5. android游戏开发方向初探
  6. 怎样保存html视频,网页上的视频怎么保存到电脑 网页视频保存到电脑的步骤教程...
  7. Sentinel控制台搭建使用
  8. Spark程序编译报错error: object apache is not a member of package org
  9. WPF 可视化树和逻辑树
  10. 时间子系统10_hpet时钟初始化
  11. cocoscreator初学笔记001
  12. Linux环境部署Node.js
  13. 软件测试--MonkeyRunner(3)
  14. revi怎么弄插件能够使附件发生一定角度的旋转?
  15. DirectX 因素:模拟合成器的仿真
  16. 红色商务年终总结PPT模板
  17. 易灵思T35 FPGA驱动LVDS显示屏
  18. python实现图片切九宫格拼图
  19. 计算机专业答辩讲什么,计算机专业毕业论文答辩的程序讲解
  20. 建行积分商城 android,建行积分商城“兑”你更好

热门文章

  1. java poker_Java超级高手成长之路!一个Java编写的斗地主游戏
  2. HP存储2000FC基础操作方法
  3. 06世界杯8强备忘录
  4. 【C语言入门】将十元钱兑换成一元,五角,一角的硬币,共计40枚,计算有多少中兑换方法
  5. R16开发板tina系统LCD调试
  6. 李彦宏百度联盟十周年演讲实录
  7. 北大联合腾讯发布泛在操作系统研究报告:泛在操作系统成产业趋势,研究与实践进入加速期...
  8. 无法打开文件“libboost_thread-vc140-mt-1_63.lib”
  9. JS模块化(node.js模块化和es6模块化)
  10. 海康摄像头与萤石云web集成记录