功能区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. TCP/IP、SOCKET、HTTP之间的联系与区别
  2. 流程审批OA办公系统解决财务报销等问题
  3. 化境文件上传修改版.可检测任何木马
  4. ssh key加密解密原理
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 I【难度简单】​
  6. 因为加班,错过77万年终大奖,你还加班?
  7. PCL中使用FLANN库(2)
  8. python面向对象的含义_Python面向对象(一)
  9. 2016年美国太阳能光伏发电成本持续下降
  10. java8—Stream
  11. Ruby 从入门到掌握视频教程(31 个视频)
  12. Mac连接win10打印机
  13. axure 调整中继器列宽_Axure教程:用中继器做图片轮播
  14. 计算机网络连接图标在哪,电脑网络连接图标不见了
  15. 标准盒模型和IE盒模型
  16. 类似Wordpress的建站系统
  17. WEP-wifite自动化渗透WEP加密
  18. jump game ii
  19. python分析红楼梦中人物形象_红楼梦中贾宝玉的人物形象分析
  20. 【英语】--动起来的英语进度

热门文章

  1. Java程序员:java游戏开发引擎
  2. SQL固定长度字符和可变长度字符
  3. con和com开头单词规律_英语成绩总上不了120分?问题出在背单词!
  4. JS获取图片(选择图片并显示)
  5. 填坑:Windows下使用OpenSSL生成自签证书(很简单,一个晚上搞明白的,让后来者少走弯路)
  6. 35岁孩子妈,2年时间彻底从互联网转型到新行业,再也不担心年龄歧视!
  7. 模板引擎应用案例- 学生档案管理
  8. 科目一模拟考试错题集
  9. 【资讯】国家级转基因大豆玉米品种审定标准
  10. Linux学习-66-系统日志管理