翻译《The Old New Thing》- Which windows appear in the Alt+Tab list?

news2024/7/4 6:19:44

Which windows appear in the Alt+Tab list? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20071008-00/?p=24863

Raymond Chen 2007年10月08日


        

        有读者Phil Quirk询问,Alt+Tab切换列表中显示哪些窗口的规则是什么。 规则其实相当简单,尽管这不是你凭直觉就能猜到的。

        注意:这个算法的细节是内部实现的一部分。 它随时都可能改变,所以请不要依赖于这些细节。 实际上,随着Flip和Flip3D的出现,这个规则已经发生了变化; 这里我们只讨论传统的Alt+Tab窗口。

        对于每个可见窗口, 我们向上追溯其所有者链,直到找到根所有者。 然后我们向下追溯可见的最后一个活动弹出窗口链,直到找到一个可见窗口。 如果你回到了起始点,那么这个窗口就会被加入到Alt+Tab列表中。

        用伪代码表示这个过程:

BOOL IsAltTabWindow(HWND hwnd)
{
 // Start at the root owner
 HWND hwndWalk = GetAncestor(hwnd, GA_ROOTOWNER);
 // See if we are the last active visible popup
 HWND hwndTry;
 while ((hwndTry = GetLastActivePopup(hwndWalk)) != hwndTry) {
  if (IsWindowVisible(hwndTry)) break;
  hwndWalk = hwndTry;
 }
 return hwndWalk == hwnd;
}

        这个算法的目的是为每个通过所有权关联的窗口群组分配一个最有代表性的窗口。 (注意,这个算法不考虑被拥有的窗口是模态的还是非模态的。)

        至少在你不是在玩一些复杂的窗口样式游戏时,规则就是这么简单。 WS_EX_TOOLWINDOWWS_EX_APPWINDOW这两个扩展样式是为了让人们能够操纵窗口是否出现在Alt+Tab列表中,即使按照简单规则它们本不应该出现。

        这是Windows提供的一种“如果你认为你比Windows更聪明,那就来证明它”的选项。 我个人建议避免使用这些选项,因为它们会使你的窗口与系统中其他窗口的行为不一致。

        具有WS_EX_TOOLWINDOW扩展样式的窗口,即使它是可见的,也会被当作不可见处理。 具有WS_EX_APPWINDOW扩展样式的窗口,即使它有所有者,也会被当作没有所有者处理。

        一旦你开始使用这些扩展样式,你就进入了“试图绕过规则”的领域,结果通常是比没有使用它们时更加混乱。

        我不确定最初的评论者到底想表达什么。 评论中描述的窗口层级结构(这更像是一个让我调试他们问题的要求,而不是一个建议)说窗口C同时是窗口A和B的模态窗口,这对我来说没有意义,因为一个窗口只能有一个所有者。

        选择Alt+Tab代表窗口的算法可能不是完美的,但它是目前我们所拥有的。 我确信这个算法的细节会不时地进行调整。 不,让我更正一下。 我知道这个算法的细节会不时地进行调整。 操作的本质是保持不变的(显示用户可以切换到的窗口,使用每个窗口群组中最“自然”的候选窗口), 但随着“自然”概念的细化,具体细节可能会被微调。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WT2003HX-16S新能源电动汽车低速报警器方案

一:低速报警器应用场景: 为在工业化发展中对外实现弯道超车,其中新能源汽车行业就为国家战略布局方向之一,前景比较广阔。随之配套的各类警报系统方案也蓬勃发展,其中低速报警器(AVAS)作为关键安…

数字孪生时代来临,实景三维千亿级别市场爆发在即

想象一下,当我们将整座城市搬到虚拟世界,点点鼠标就能实时掌握城市运行情况,可以实现数字空间与现实空间的实时互联互通、在线治理,是不是听起来像科幻电影一样不可思议? 现在,通过运用遥感测绘、大数据、云…

前端项目使用docker编译发版和gitlab-cicd发版方式

项目目录 app/ ├── container/ │ ├── init.sh │ ├── nginx.conf.template ├── src/ ├── .gitlab-ci.yml └── deploy.sh └── Dockerfile └── Makefilecontainer目录是放nginx的配置文件,给nginx镜像使用 .gitlab-ci.yml和Makefile是c…

JetLinks物联网平台初步使用——TCP接入

基于上一篇,完整的搭建了前后端整个系统,可以在windows 7完美的运行使用。 目录 1、创建网络组件 2、创建协议管理 3、创建网关 ​4、创建产品 ​5、创建设备 6、模拟对接 1、创建网络组件 进入平台后(用户名密码都是admin&#xff…

【代码随想录】【算法训练营】【第17天】 [110]平衡二叉树 [257]二叉树的所有路径 [404]左叶子之和

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 17,又是一个令人愉快的周五~ 题目详情 [110] 平衡二叉树 题目描述 110 平衡二叉树 解题思路 前提:平衡二叉树:左右子树高度差不超过1, 思路:…

高性能推理框架漫谈

传统模型分布式推理框架 Tensorflow servingPytorch ServingTriton Server 大语言模型的推理框架 其中, VLLM 后端接入了Ray 框架, 作为调度请求的分发处理;除此之外,还包括Nvidia 最新推出的TensorRT-LLM, 增加了对…

开放式耳机怎么选择!教你几招!2024开放式蓝牙耳机推荐

在面对市场上琳琅满目的开放式耳机时,许多用户可能会感到难以抉择。作为一名开放式耳机的爱好者,我根据自己的实际使用体验,整理了一些我认为值得推荐的开放式耳机,希望能为正在寻找合适耳机的朋友们提供一些参考和帮助。我将为大…

【真实项目中收获的提升】- 前后端联调

场景 小型项目前后端联调,不需要部署到sit或uat环境下。 解决方法 后端部署frp服务 下载frp软件 配置frpc.ini文件,先把文件设置可编辑(可同时配置多个 例如下面的chz 上面打码的是frp服务器地址) 然后起start.bat 其实就是执行frpc -c frpc.ini命令…

前端 CSS 经典:元素倒影

前言&#xff1a;好看的元素倒影&#xff0c;可以通过-webkit-box-reflect 实现。但有兼容问题&#xff0c;必须是 webkit 内核的浏览器&#xff0c;不然没效果。但是好看啊。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"&g…

使用第三方的PyCharm开发工具

目录 PyCharm下载 PyCharm安装 运行PyCharm 创建工程目录 编写“hello world”程序 在同一个工程下创建多个程序文件 运行程序的多种方法 保存程序 关闭程序或工程 删除程序 打开最近的工程 调试断点 熟悉PyCharm开发环境 设置Python解析器 输出彩色控制台文字及…

【C语言】实现贪吃蛇--项目实践(超详细)

前言&#xff1a; 贪吃蛇游戏大家都玩过吧&#xff1f;这次我们要用C语言来亲手制作一个&#xff01;这个项目不仅能让我们复习C语言的知识&#xff0c;还能了解游戏是怎么一步步做出来的。我们会一起完成蛇的移动、食物的生成&#xff0c;还有碰撞检测等有趣的部分。准备好了…

代码随想录——找树左下角的值(Leetcode513)

题目链接 层序遍历 思路&#xff1a;使用层序遍历&#xff0c;记录每一行 i 0 的元素&#xff0c;就可以找到树左下角的值 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}*…

el-table 组件实现 “合并单元格 + N行数据小计” 功能

目录 需求 - 要实现的效果初始代码代码升级&#xff08;可供多个表格使用&#xff09;CommonTable.vue 子组件 使用子组件1 - 父组件 - 图1~图3使用效果展示 使用子组件2 - 父组件 - 图4使用效果展示 注意【代码优化 - 解决bug】 需求 - 要实现的效果 父组件中 info 数据示例 …

【vue部署】Apache部署vue项目

Apache部署vue项目 Apache 下载安装(windows)1. 下载2. 安装3. 启动服务 vue 部署配置1. 基础配置2. 解决页面刷新问题 Apache 下载安装(windows) 1. 下载 Apache 2.4.59 下载地址&#xff1a;httpd-2.4.59-240404-win64-VS17.zip Visual C Redistributable for Visual Studi…

海山数据库(He3DB)从方法到实践,构建以场景为中心的体验管理体系

编者按&#xff1a;体验优化的过程中设计师经常会遇到几个阶段&#xff0c;发现问题、定义问题、优化问题、查看反馈&#xff0c;但在产品快速迭代的过程中&#xff0c;体验的问题经常被归类到“不紧急”需求中&#xff0c;并逐步转为长尾问题&#xff0c;这些不被重视的问题聚…

AI在线免费音乐生成工具:suno、udio、stableaudio

文生音乐 1、suno https://app.suno.ai/ 2、udio https://www.udio.com/ 3、stableaudio https://stableaudio.com/live https://www.stableaudio.com/?utm_campaignstableaudio_promo&utm_mediumcta_button&utm_sourcestability_ai 4、其他MusicGen https://…

2024 年 电工杯(A题)大学生数学建模挑战赛 | 园区微电网风光储协调| 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 CS团队倾注了大量时间和心血&#xff0c;深入挖掘解决方案。通…

智慧校园的运作加速学校现代化

智慧校园的建造使师生的学校日子愈加便利&#xff0c;学校办公现代化&#xff0c;整个学校充满了生机与活力。其间智慧校园带来的不只是大环境的改变&#xff0c;也为教育教育带来了一种新的形式。我们知道智慧校园是依据信息化的互联网技能&#xff0c;这些技能运用于学校后让…

linux系统CPU持续飙高的排查方法

目录 前言&#xff1a; 1、查看系统cpu使用情况 2、找出占用cpu高的进程 3、进一步分析进程占用的原因&#xff01;&#xff01;&#xff01; 4、解决办法 前言&#xff1a; 如果一台服务器&#xff0c;它的cpu使用率一直处于一个高峰值&#xff0c;此时服务器可能导致无…

vue3中在elementplus多行表格中渲染多图数组中首图的显示问题,无法正常显示图片,作用域插槽写法问题

背景 在vue3中使用elementplus的el-table组件的时候&#xff0c;此时我在vue生命周期中挂载时获取了到服务器了数据&#xff0c;这个数据是一个多个对象的数组&#xff0c;各个对象又包括了图片数组&#xff0c;此时我想在表格上的每一行渲染图片的首图&#xff0c;也就是下标为…