探究 Z-Order

Windows桌面窗口层次与C语言底层操作实战 在Windows桌面开发中,理解窗口管理器(DWM)和窗口层次(Z-Order)是突破常规GUI编程限制的关键。窗口层次决定了桌面元素(如壁纸、图标、应用窗口)的堆叠顺序,其底层原理涉及窗口句柄(HWND)管理和消息传递机制。掌握这些基础概念,开发者能够实现更高级的桌面集成功能,例如动态桌面组件或自定义窗口管理器。通过直接操作窗口层次,可以优化资源管理,提升应用性能。本文以C语言设置壁纸为例,深入解析了查找窗口句柄、设置父窗口等核心API的实战应用,并探讨了在动态壁纸、桌面小部件等场景中的技术实现与兼容性考 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Z-order,也有人称为 Zorder,指的是对象之间的层次关系。举个简单的例子:在使用 PowerPoint 制作文件时,当你把文件上被其它对象盖住的某个对象「上推至最顶层」,你就是在改变它的 Z-order。通常 Z-order 高者置于 Z-order 低者的「上面」。 通常 GUI 程序设计都会用到 Z-order 的观念,所以 Borland OWL 有 Z-order,Java AWT 有 Z-order,Java Swing 也有 Z-order。这些 GUI 链接库都提供了良好的 Z-order 自动管理机制,贴心地帮我们管理 Z-order,大部分的情况之下,我们不会直接使用到 Z-order。但是,当你需要处理到对象之间的层次关系时,如果你不知道 Z-order,你可就麻烦了。我曾经用 Java 设计过一个简单的 UML 绘图软件,当时并未善加使用 Swing 的 Z-order 管理机制(即 JLayeredPane),结果多写了好些程序代码就只是为了控制层次关系。这篇文章简单地为您介绍 Java 的 Z-order 观念以及 JLayeredPane,希望你不要重蹈我的覆辙。 许多 Swing 的书都会再三告诫读者,「尽量不要」混合使用 Swing 和 AWT 的组件,原因就在于 Swing 和 AWT 的 Z-order 系统是不一样的。Swing 组件大都是 lightweight 的,而 AWT 的组件则一律是 heavyweight 的。我有个不错的比喻:Swing 组件是在 AWT 组件之内径自切割出来的层次,就好比 green thread 是在 process 之内径自切割出来的排程单位。你可能会问:「现在 green thread 已经「进化」成 native thread 了,以后 Swing 的 Z-order 会不会也「进化」成和 AWT 的 Z-order 同地位?」我认为不会,因为如果这样做的话,Swing 组件都必须继承自 AWT 组件,而目前 Swing 正致力于减少 CPU 和内存资源的消耗量来提升速度,所以不可能还走回头路 heavyweight 化。 AWT 和 Swing 的 Z-order 规则一样,如下: 1. 组件的 Z-order 一定比其容器来得高,组件一定位于容器上层。 2. 同一个容器的两个组件中,越早加入容器者其 Z-order 越高,位置越上层。 但是如果混合使用 AWT 和 Swing,上述第二条规则就不一定了。比方说,在某容器内先加入一个 Swing 的组件,再加入一个 AWT 的组件,且此二组件有重叠的区域,结果却是 AWT 组件出现在 Swing 组件上面。这并未遵守第二条的规定,因为此例同时使用了 AWT 和 Swing,Swing 组件被当成和容器同一个层,AWT 组件则是容器上一层。 在六个标准的 layout(包括 BorderLayout、FlowLayout、GridLayout、GridBagLayout、CardLayout、以及 BoxLayout)管理之下,容器的组件之间不会重叠(甚至连 CardLayout 管理之下也是如此,因为 CardLayout 只是逻辑上组件重叠,但实际上的做法是一次只有一个组件被设为 visible),所以大多数情况下 Z-order 并不会影响外观。但是当组件之间有重叠的情况发生时,你就要特别注意了,这些包括了: ˙ 将 layout 设为 null,由程序自行控制组件的 layout,而且允许组件重叠的话,你不可以同时使用 AWT 和 Swing 的组件。 ˙ JInternalFrame、JScrollPane、JLayeredPane、JDesktopPane...... 等容器会以重叠的方式放置组件,你不可以同时使用 AWT 和 Swing 的组件。 ˙ 当使用 pop-up menu 时,此 menu 的容器如果有 heavyweight 的组件,那么你必须让此 pop-up menu 为 heavyweight,否则此 pop-up menu 可能会被盖住。呼叫 JPopupMenu.setLightWeightPopupEnabled(false) 即可让以后产生的 pop-up menu 都是 heavyweight 形式的。 前面提到,越早加入某容器的组件,其 Z-order 越高。除了 remove 再 add 之外,想改变 Z-order,你别无它法。但是如果你真的需要改变某容器的组件之 Z-order,那么你可以改用 javax.swing.JLayeredPane 当作容器,因为 JLayeredPane 提供了许多让你可以改变组件 Z-order 的 method。 对于 JLayeredPane 来说,Z-order 由两部分组成,分别是 layer 和 position,两者都是整数值。某组件的 layer 数目越高,表示位于越上层。如果两个组件位于同一个 layer,则 position 数目越低者位于越上层。关于 JLayeredPane,请看 O'Reilly 出版的「Java Swing」一书 223~231 页。 这篇文章可能有点复杂,必要时请仔细地多阅读几次。
数据库国产化探究及升级改造过程指导 当前官网最新版本为DM8,相较于目前主流产品架构:不同特性依靠不同内核去实现,DM8独特采用了双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。 阅读详情

相关推荐

高光谱知识(1)-高光谱成像技术的理解

系列文章目录 高光谱技术可以获得待观测目标或场景的连续单色光谱图像,并通过空间维(x, y)数据和光谱维(λ)数据共同组成三维观测数据立方体,从而为研究人员提供探测目标或场景中的每一个点的空间和光谱特征细节。这种兼具相机的高分辨成像能力和光谱仪的高光谱分辨能力使得高光谱被广泛应用于测绘遥感、目标识别、环境监测与评估、临床影像诊断、过程监控等任务中,并在地理、空间、海洋、气候、大气、农业、植被、生态、医药、安防、制造与色度等多个领域中发挥巨大作用。 文章目录系列文章目录前言一、按获取数据的过程划分二、按照光

Echo_Code的博客 1万+

码农的自我修养 - 什么是Z-Order

Z-Order是计算机的界面显示领域,窗口管理相关的一个术语。 一般是指在显示屏上,存在多个窗口,为了管理多个二维平面窗口,而增加了一个维度,来控制窗口的显示顺序。 Z-Order. The z-order of a window indicates the window's position in a stack of overlapping windows. This window stack is oriented along an imaginary axis, the z-axis...

guoqx的专栏 2505

【无标题】 Python自动化法律文书撰写

Jinja2是一个功能强大的模板引擎,支持丰富的语法和功能。除了条件判断和循环语句外,Jinja2还支持过滤器、宏、继承等高级特性,非常适合处理复杂的文书模板。

master_chenchen的博客 2065

通过 Z-Order 技术加速 Hudi 大规模数据集分析

1. 背景多维分析是大数据分析的一个典型场景,这种分析一般带有过滤条件。对于此类查询,尤其是在高基字段的过滤查询,理论上只我们对原始数据做合理的布局,结合相关过滤条件,查询引擎可以过滤掉大...

过往记忆大数据 2214

高质量水下垃圾数据集解析与应用实践

计算机视觉在环保领域的应用日益广泛,其中目标检测技术是关键支撑。通过深度学习模型对水下垃圾进行精准识别,需要高质量标注数据集作为基础。1962幅水下垃圾数据集采用专业预处理流程,包括色彩校正、去雾增强等技术,有效解决了水下图像的光照不均、水体浑浊等典型问题。该数据集覆盖12类常见海洋垃圾,标注错误率低于2%,显著提升了模型训练效果。在工程实践中,该数据集特别适合用于水下机器人实时检测系统和海洋垃圾分布热力图生成等场景,通过优化模型架构和数据增强策略,可实现更高效的环境监测与保护。

weixin_42616115的博客 251

从药企研发视角:如何用GNN提升分子水溶性预测准确率?PyTorch+ESOL全案例

本文从药企研发的实际需求出发,详细介绍了如何利用图神经网络(GNN)技术,结合PyTorch框架和ESOL数据集,构建并优化分子水溶性预测模型。通过完整的代码案例,深入探讨了分子图数据处理、GNN架构设计、超参数调优以及模型评估与解释等关键环节,旨在帮助研发团队提升预测准确率,从而更高效地筛选和优化候选药物分子。

weixin_29054399的博客 293

Z-order

场景:存储和查询POI(Point of Interest)数据。场景:IoT设备数据采集。场景:用户行为日志分析。

铁马冰河入梦 1520

Ollama本地大模型部署指南:从核心原理到实战避坑

大语言模型(LLM)作为人工智能领域的核心技术,通过海量数据训练获得强大的语言理解和生成能力。其工作原理基于Transformer架构,通过自注意力机制处理序列数据,在文本生成、代码编写和对话系统等场景展现出巨大价值。随着开源模型的普及,本地部署成为关注焦点,它解决了数据隐私和定制化需求,但面临环境配置和资源管理的挑战。Ollama作为开源工具,通过封装模型格式和统一API,简化了本地部署流程,支持GPU加速和性能调优,让开发者能够快速集成到IDE和自动化脚本中,实现高效的本地AI应用部署。

weixin_30915951的博客 453

算法-Z-order算法

图中1的坐标为(0,1),2的坐标为(1,1),3的坐标为(3,0),则1的交错后的二进制字符串为0010(对应的Z值为2),2的交错后的二进制字符串为0011(对应的Z值为3),3的交错后的二进制字符串为0101(对应的Z值为5)。之所以称之为Z-order曲线,是因为二维数据画出来的Z-order曲线形状像Z。左图是一个Z-order曲线的示例,中间的图是用实际的二维无序点填充后的Z-order曲线,也就是说,Z-order曲线是基于点的实际位置以及用2.1的方法计算出的Z值,在原图中画出的曲线。

weixin_40826634的博客 1114

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 154

Z-Order:数据湖性能优化的秘密武器

Z-Order是一种优化数据查询的技术,它通过将多维数据映射到一维的空间填充曲线,实现多维度查询的高效性。它解决了传统索引“最左匹配原则”的局限,尤其适用于大数据湖的OLAP场景,可显著提升多维度复杂查询的性能。然而,Z-Order也存在局限,如牺牲单列查询性能、维护成本和对数据特征的要求。它并非数据湖的核心,而是关键优化技术之一,能降低数据建模门槛,提供可预期的性能,适应现代分析需求。使用时需权衡利弊,选择合适的场景。

数据与算法架构提升之路专栏 1194

181、LLC谐振变换器的PCB设计实战(文件归档)

PCB设计实战经验总结:LLC谐振变换器的关键要点 本文通过实际案例总结了LLC谐振变换器PCB设计中的核心经验和常见误区。重点包括: 文件命名规范(项目代号_板卡类型_版本号_日期格式) 四层板标准层叠结构设计要点 谐振回路走线原则(宽度、长度控制) 地线处理技巧(功率地/控制地隔离) 散热设计注意事项(MOSFET过孔阵列、变压器布局) 完整的文件归档清单(Gerber、钻孔、装配图等) 作者特别强调,良好的设计归档习惯能显著降低生产问题概率,建议采用双重备份机制。文中多个真实案例(如谐振频率偏移、EM

Jack010169的博客 45

[转]探究 Z-Order

近日做一个GUI的东东,混用了AWT和Swing,结果出现菜单层叠错误、屏幕闪烁(当时试了手动双缓冲也依旧)等问题,终于发现,“「尽量不要」混合使用 Swing 和 AWT 的组件”。。。 原文作者及出处找不到了[技术短文]探究 Z-OrderZ-order,也有人称为 Zorder,指的是对象之间的层次关系。举个简单的例子:在使用 PowerPoint 制作文件时,当你把文件上被其它

blog://clapton/ 1603

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL Order By 工作原理探究以及索引优化手段

MySQl 数据库 Order By 工作原理探究,同时探索 Order By 的索引优化手段

蒋大钊的博客 960

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python/numpy基础知识,order=C F A K,各个数据索引顺序的区别?

python/numpy基础知识,order=C F A K,各个数据索引顺序的区别?

小坏蛋的博客 3415

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

排序对parquet 文件大小的影响

压缩可以节省空间,因为它可以通过减少文件中的冗余信息来缩小文件的大小。这样,文件中的数据量就会减少,从而减小文件的大小。不一定,因为要想通过排序让存储空间降低,则必须将相似的值放在一起,如果数据在排序键上没有很好的分布,那么排序可能会增加文件大小,反之则可以降低文件大小。因为排序可以将相似的值放在一起,从而提供压缩效率( 因为压缩算法通常使用重复数据的概念来压缩数据,可以参考 霍夫曼编码 )排序可以减少字典编码的大小,因为它可以使相似的值具有相同的前缀,从而使字典编码可以使用更短的前缀来表示它们。

shengjk1的博客 1209

Unity渲染顺序探究

Unity渲染顺序探究,与渲染队列,场景物体纹理合批,UI层级等相关。

qq_43811969的博客 494

sql order by 和limit一起效率很低_谨防索引 seeks 的效率低下

背景 最近线上的一个工单分析服务一直不大稳定,监控平台时不时发出数据库操作超时的告警。运维兄弟沟通后,发现在每天凌晨1点都会出现若干次的业务操作失败,而数据库监控上并没有发现明显的异常。在该分析服务的日志中发现了某个数据库操作产生了 SocketTimeoutException。开发同学一开始希望通过调整 MongoDB Java Driver 的超时参数来规避这个问题。但经过详细分析之后,这样...

weixin_39622084的博客 257

你真的会用preg_match_all吗?解析返回数组中的隐藏规律(专家级干货)

掌握preg_match_all返回结果的嵌套结构与索引规律,轻松提取复杂文本中的匹配内容。本文深入解析preg_match_all结果数组的生成逻辑、适用场景及高效遍历方法,助你精准处理多组捕获数据,提升正则实战效率,值得收藏。

ProceGlow的博客 273

一条SQL语句的执行计划变化探究

最近有个同事碰到一个问题,想让我给点思路。我大体了解了一下,是一个系统目前在做压力测试,但是经业务反馈发现某个环节的处理时间有些长,排查了一圈,最后这件事情就落在了DB这边,希望DB能够给点意见,是否存在一些性能瓶颈。 ...

congbao6525的博客 244

SQL入门经典(第5版)第七章 数据库查询

本章的重点内容包括: 什么是数据库查询 如何使用SELECT语句 利用WHEREB子句为查询添加条件 使用列别名 从其他用户的表里选择数据本章将介绍数据库查询,主要是SELECT语句的使用。7.1 什么是查询 查询是使用SELECT语句对数据库进行探究。我们利用查询,根据需要从数据库里以一种可理解的格式提取数据。7.2 SELECT语句 SELECT语句代表了SQL里的数据查询语言(D

KgdYsg的博客 785

《Android开发艺术探索》第八章Window和WindowManager小结

1. 概述 Window是一个抽象类,具体实现是PhoneWindow,通过WindowManager创建。Window的具体实现位于WMS中,WindowManager和WMS是IPC交互过程。 通过mWindowManager.addView(view, layoutParams);添加一个Window。 Window有三种类型,应用Window(对应Activity),子Window(

doom20082004的博客 510
上一篇: BEA系统公司卡尔曼:商用市场 .Net不敌Java
下一篇: 测不准原理
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值