【Qt记录】Windows 窗口层级(Z-order)
创始人
2024-03-16 12:11:49
0

功能:软件有一个提示弹窗,希望让他永远在最上面,保证该窗口在任何情况下不会被遮挡。

由上面的问题就查找对应的api找到了SetWindowPos()。

在说这个函数之前,先了解以下概念:

Z-order(Z顺序)

其实这玩意翻译成 Z轴 更好。

首先对于显示器而言,以左上角为坐标原点,向右为x轴,向下为y轴。除此之外,由里向外就是z轴,也就是所谓的Z-order。

top of the Z order:Z轴的最顶层,虽然是Z序里最上面的,但它并不一定是最最上面的。

按照Z轴的顺序,由外向里,分别是:顶端窗口–顶层窗口–子窗口。顶端窗口有TOPMOST风格。

我们在点击使用不同窗口的同时,就在不断的改变Z序列。因为系统会将你点击的窗口(活动窗口)放在Z序列中同类窗口的顶部(顶层窗口)。当一个窗口成为了顶层窗口,它的子窗口也就成了顶层窗口。

最后,总结一下排序依次是:TOPMOST窗口—顶层窗口—非顶层窗口

SetWindowPos()函数:

BOOL SetWindowPos (HWND hWnd, //窗口句柄HWND hWndInsertAfter,  //原本可以是定位的窗口之前的窗口的句柄,但是主要使用的是一些参数。int X,int Y, //窗口左上角的x,yint cx,int cy, //窗口的宽度和高度UINT uFlags //窗口大小和位置标志,也是一些参数,具体参数比较多,详见MSDN。
);

主要解释第二个参数:hWndInsertAfter
请添加图片描述
上面截自MSDN,解释一下:

  • HWND_BOTTOM:将窗口置于Z顺序的底部。
  • HWND_NOTOPMOST:将窗口放置在所有非最上面的窗口上方(即,所有最上面的窗口的后面)。
  • HWND_TOP:将窗口置于Z顺序的顶部。
  • HWND_TOPMOST:将窗口置于所有最上面的窗口上方。即使禁用窗口,窗口也将保持其最高位置。

由上到下,越来越靠前,TOPMOST就是最上面的窗口。

Ps:发现了MSDN官网的解释存在的错误,HWND_TOPMOST 后面的Meaning第一句应该是:Places the window above all topmost windows. 太坑了。

MSDN地址:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowpos

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...