Excel阅读模式/聚光灯开发技术序列作品之三

高级自定义任务窗格开发原理简述——    隐鹤

1. 引言

Excel任务窗格是一个可以用来存放各种常用命令的侧边窗口(准确的说是一个可以停靠在类名为xlDesk窗口周围的Excel的子窗口)。Excel插件开发中可以用它来存放一些常用的自定义界面的窗口,用于相关Excel的操作,还是十分方便的。原生长相如下图:

在office开发中,微软提供了原生的任务窗格接口,可以接收一个我们自定义的userform的实例,界面自定义也都很方便。

唯一不足的是,他给的自定义很有限。比如,窗格的宽度(或高度)有限制,窗格的标题栏(有个关闭X没有提供方法去除),总之不能够最大化的进行自定义,相信有过任务窗格开发经验的应该都明白了。显然没有如下图的这种任务窗格灵活:

知名Excel插件Kutools(收费),中工作部表导航功能用到的任务窗格就是上图这种:

本文要阐述的就是这种任务窗格,我称之为高级自定义任务窗格。称之为高级任务窗格是有出处的,有个外国网站就有这种任务窗格的开发组件出售。

对于Excel开发者来说,用这种高级任务窗格用来装载开发的常用功能,但又可以让其占地可高度调控是十分有必要的。一定程度上可以免于Ribbon切换带来的繁琐。

2. 目前已实现此类任务窗格的插件:

◆ Kutools

目前其他人的插件只看到大名鼎鼎的Kutools插件的作者中的工作簿表导航功能用到这种任务窗格。还是鲜有看到其他人开发。

◆ ExcelPower_Helper

除了Kutools的,我只看到本人开发的ExcelPower_Helper中的侧边栏工具已成功实现这一类的任务窗格。

其实还是有不少开发者网友是很想要去开发这种类型的高级任务窗格的。

3.开发技术要点简述

   

本文最重要的部分,来谈一谈实现这种方式的简要原理:

◆ Excel是MDI多文档窗口,Mdi窗口是可以调整其位置大小的。

◆ 通过spy++可以看到office的任务窗格实际是其主窗口Xlmain的一个mdi子窗口,我们可以创建一个这样的子窗口。

◆ 然后通过api调整其与类名为xldesk窗口的位置关系即可。

◆ 比较难处理的是要捕获一些窗口的消息,当xldesk窗口大小位置发生变化时,重新处理挂载任务窗格与xldesk窗口的关系。

◆ 要注意,因为捕获的窗口消息是和窗口大小位置有关的WM_SIZE等,捕获后要去处理这些窗口的大小等,又会产生类似消息。要注意处理好这其中的消息循环逻辑,不然会陷入消息泵死循环。

◆ Excel2007与之后的版本某些地方不太一样。2007以下的没做测试。

感兴趣的可以按以上几点思路,去研究下。

【总结】

高级任务窗格,实际也没那么难。相比之下应该是聚光灯技术序列作品里最简单的一个了。

  三篇聚光灯技术序列阐述博客至此已经完结。可以了却一宗心事了。

  所谓技术嘛,在专业以计算机编程为业的人那里,以上三篇博客阐述的,可能也不算什么多么厉害的技术,虽然牛逼也吹了不少(后面还会继续吹),但是作为一个编程爱好者,一个Excel开发爱好者,我是认真的。能得到我的用户们的一点赏识就已知足。谢谢各位。

Excel阅读模式/聚光灯开发技术序列作品之三 高级自定义任务窗格开发原理简述—— 隐鹤的更多相关文章

  1. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld

    Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述———— 隐鹤  /  HelloWorld 1. 引言 自本人第一篇博文“Excel阅读模式/单元格行列指示/聚光灯开发技术要 ...

  2. Excel阅读模式/单元格行列指示/聚光灯开发 技术要点再分享

    1. 引言 文题中所谓技术要点再分享,本意是想在大神Charltsing Liu的博文“简单介绍Excel单元格行列指示的实现原理(俗称聚光灯功能)”的基础上写一点个人开发体会.写本文的初衷有三点,一 ...

  3. [转]TEC1401.Report开发技术总结 - 第三章 使用Oracle Reports开发报表-创建一个分组报表(2/4)

    本文转自:http://blog.csdn.net/deepsea_allen/article/details/53900284 第三章   创建一个分组报表 1.     建立数据模型 数据模型用于 ...

  4. 《Windows驱动开发技术详解》之自定义StartIO

    自定义StartIO 系统定义的StartIO队列只能使用一个队列(DDK提供的StartIO内部只有一个队列),这个队列将所有的IRP进行处理化.例如,读.写操作都会混在一起进行串行处理.然而,有时 ...

  5. VC++/MFC(VC6)开发技术精品学习资料下载汇总

    工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...

  6. Autodesk 最新开发技术研讨会 -8月22日-Autodesk北京办公室

    为了增进与广大中国地区Autodesk产品的二次开发人员的了解与互动,帮助中国地区的Autodesk产品二次开发人员了解Autodesk最新的二次开发技术动向,并获得Autodesk公司专业开发支持顾 ...

  7. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?   什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念 ...

  8. 个人永久性免费-Excel催化剂功能第72波-序列规则下的数据验证有效性好帮手:快速录入窗体辅助录入

    Excel作为最好用的数据录入工具,没有之一,如果能够充分利用好Excel的灵活性和规范性,将带来极大的生产力提升,前面的几波功能也有做了几大数据录入的辅助功能,今天再次给大家带来一个特定的使用场景, ...

  9. GIS历史概述与WebGis应用开发技术浅解

    声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...

随机推荐

  1. springboot~Money类型在序列化时遇到的问题与解决

    在java扩展包里,有这样一个包,它可以描述货币类型,它说币种和金额组成,可以应用在任何复杂的场合里,这个对象结构如下: { "price": { "amount&quo ...

  2. LVS (一) 原理

    LVS原理概述 负载均衡就是,在多个提供相同服务主机的前段,增加一个分发器,根据用户请求,然后根据某种方式或者策略,将用户请求分发到提供服务的主机上.同时负载均衡应用还应该提供对后其后端服务健康检查的 ...

  3. 目标检测 非极大值抑制(Non-Maximum Suppression,NMS)

    非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索.也可以理解为只取置信度最高的一个识别结果. 举例:  如图所示,现在 ...

  4. python异常处理的哲学

    所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...

  5. 使用 FFT 分析周期性数据

    可以使用傅里叶变换来分析数据中的变化,例如一个时间段内的自然事件. 天文学家使用苏黎世太阳黑子相对数将几乎 300 年的太阳黑子的数量和大小制成表格.对大约 1700 至 2000 年间的苏黎世数绘图 ...

  6. 第一册:lesson 119.

    原文: A true story. question:Who called out to the thieves in the dark? Do you like stories? I want to ...

  7. 原生js轮盘抽奖实例分析(幸运大转盘抽奖)

    效果图: 所需图片素材: 这张图是pointer.png的位置的. turntable-bg.jpg这张是转盘背景图,在背景位置. 这张是turntable.png位置的. 需要这三张图片,如果要实现 ...

  8. [.NET] 使用 Senparc.Weixin 接入微信公众号开发:简单实现自动回复

    使用 Senparc.Weixin 接入微信公众号开发:简单实现自动回复 目录 一.前提 二.基本配置信息简析 三.配置服务器地址(URL) 四.请求处理 一.前提 先申请微信公众号的授权,找到或配置 ...

  9. IntelliJ IDEA下如何设置JSP模板

    今天在学习Spring MVC知识时,发现自己所用的IntelliJ IDEA中自动生成的JSP文件不支持EL表达式的使用,所以就想导入新的JSP模板,方便以后使用.根据旧模板的提示,如下图 找到Se ...

  10. SharePoint中你不知道的图片库(实战)

    分享人:广州华软 无名 一. 前言 以前,在门户网站放一个图片幻灯片时,除了要自己开发实现外,还需要处理上传图片的大小,但在SharePoint中,使用图片库,无需花费时间和精力,就能马上实现. 二. ...