ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ggmmlol

[原创] 【重磅发布】:聚光灯——我的加载宏系列小工具【单元格小工具】之四

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 11:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:Windows API应用
《窗体“变形记”》第一集中,已经让窗体变成“半透明”、且“鼠标穿透”。接下来,我们要让它到指定的环境中去继续“变形”,也就是说,要改变它的外观形状、位置、大小。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 12:05 | 显示全部楼层
我们的目标是做单元格的“行列指示”,所以我们希望让它可以变成像行、列一样的长条形,如果要同时指示行、列,还需要它可以变成“十”字形,甚至在EXCEL窗口处于拆分状态时,如果目标单元格在4个窗格内同时可见,我们还希望它能变成“井”字形。接下来,就一步步去完成这个变形吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 12:41 | 显示全部楼层
本帖最后由 ggmmlol 于 2018-2-4 12:43 编辑

其实,上一楼所述的窗体变形,在论坛里里早已经有了类似的实例。所以,我就省点事,直接去把它搬过来。

变形窗口.rar (18.98 KB, 下载次数: 263)

注:此附件的原作者,是本论坛的前辈“小fisher ”,具体是在哪篇帖子里,已经记不清了,但应该是在“知识树”所收录的帖子里。所以,在此不仅也要感谢“小fisher ”,还要感谢本论坛的BOSS以及在百万贴中淘出这些好帖子、为“知识树”的成长而播种、浇水、施肥的论坛前辈们,栽下、呵护了这一棵“知识树”,正所谓“前人栽树,后人乘凉”,如今这棵“知识树已经”枝繁叶茂“,而且也已开花结果,硕果累累了。



TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 12:53 | 显示全部楼层
通过23楼的附件所演示的生成“异形窗口”的技术,我们可以得到所需要的“一”字形、“|”字形,“十”字形,乃至“井”字形的窗体形状,当把这样的窗体调整到合适的大小、位置,并在合适的时机显示出来,那么,它就可以真正成为对单元格作行列指示的“导航灯”了。

TA的精华主题

TA的得分主题

发表于 2018-2-4 13:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sa顶顶,盼望楼主分享源码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 13:36 | 显示全部楼层
本帖最后由 ggmmlol 于 2018-2-4 13:37 编辑

生成“异形窗体”的技术核心就是"Region"(面域)的运用。
在Windows系统中的GDI中,基本的Region有长方形、椭圆形,多边形(由3个及以上的一系列点依次以线段连接并首尾相连所围成)这几种封闭面域。
直接利用它们,可以画出一个单一形状的简单的面域;
而对多个简单面域进行一系列的旋转、合并计算(交集、并集、异或),可以生成各种复杂的图形。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 13:59 | 显示全部楼层
对于单元格行列指示的“导航灯”,只需要长方形或它们的并集,
所以,23楼附件中用到的四个与窗口面域相关的GDI函数:CreateRectRgn(创建长方形面域)、CombineRgn(面域合并)、SetWindowRgn(设置窗口的面域),DeleteObject(销毁GDI对象,用于回收内存),恰好够用。
当然,Windows绘图所需要的最基本的GDI函数: GetDc(获取绘图场景)、ReleaseDC(解除绘图场景,用于回收内存)、GetDeviceCaps(获取物理设备参数,这里主要用来获取屏幕的分辨率,即每英寸的像素个数)也是必不可少的。

TA的精华主题

TA的得分主题

发表于 2018-2-4 14:54 来自手机 | 显示全部楼层
不错,支持。16版应该可以用条件格式吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-4 15:47 | 显示全部楼层
本帖最后由 ggmmlol 于 2018-2-4 15:58 编辑
zpy2 发表于 2018-2-4 14:54
不错,支持。16版应该可以用条件格式吧

感谢你送的鲜花捧场,也感谢26楼zanjero的顶贴。

看着你们两位论坛老铁手里都攥着技术分,有点眼热哈。希望我也能早点实现对技术分的零的突破啊~

我这里专门用Windows的API这种底层的工具来实现“导航灯”,就是为了避免代码对EXCEL文档的任何内容做任何的修改(无论是临时的、或永久的)。根据这一原则,它只要能够实现,就不会影响你的EXCEL文档的任何内容,所以,无论在哪个版本的EXCEL里,都可以正常使用EXCEL的所有功能,当然也可以正常使用条件格式。

TA的精华主题

TA的得分主题

发表于 2018-2-4 19:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 06:27 , Processed in 0.044050 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表