活动窗口(Active),焦点窗口(Focus)和前景窗口(Foreground)之间的关系
2008-12-25 18:24
做UI的,我想势必会遇见这些问题,之前由于对这3种状况的窗口多少会有误解和混淆,正好现在抽空找了一下文章,整理了一下,做个笔记吧。
参考文章“Linux焦点模型分析”
URL:http://www.ibm.com/developerworks/cn/linux/l-cn-focus/index.html
(记住这篇文章是描述Linux焦点模型的,原本和Windows没啥关系,其实算是仇家,只是其中有一段是描述Windows焦点模型的,所以偷过来用一下,哈哈,窃书不算偷啥,所以请看文章的“Linux 与 Windows 焦点系统”这段就行了,其他可以略过)
下面是整理的内容和笔记:
任何一个时候,我们的Windows桌面上总有一个最前台的窗口,其实说简单的,就是标题栏变成深蓝色的那个窗口,仅此一个,这个窗口就是前景窗口(Foreground Window),其他窗口就是后台窗口(Background Window)。那创建前景窗口的线程就是前景线程(Foreground Thread),这个线程并不一定就是应用程序的主线程。
线程内部会维护当前自己的活动窗口(Active Window)和焦点窗口(Focus Window), 焦点窗口其实只是窗口的一个属性,其实就是“焦点状态”是窗口的一个属性,而焦点窗口的顶层窗口就是活动窗口,举个例子:一个对话框中有一个按钮,当按钮 获得焦点的时候,那此按钮就是焦点窗口,则包含此按钮的对话框就是活动窗口,若出现窗口嵌套的情况,则最根的那个窗口才是活动窗口。
上面2段已经分别描述了前景窗口,活动窗口和焦点窗口的一些情况,可是前景窗口和活动窗口又是什么区别呢?
焦 点窗口只是一个局部的概念,并不是所有的焦点窗口都可以获得键盘事件。只有前景线程的焦点窗口才能从系统队列中得到键盘事件,而前景线程中的活动窗口是前 景窗口。在任何时刻系统中都只可能有一个被激活的窗口,这就是前景窗口。这也就回答了上一节中的问题:与系统队列相连接的线程就是前景线程,而那个可以得 到键盘事件的窗口就是前景线程的焦点窗口。(以上文字引自开头的文章)
相信仔细理解一下这些描述,应该能对你有所帮助了。
分享到:
相关推荐
GWES是Android图形系统的核心组件之一,负责处理窗口管理和输入事件。 **GWES基本原理:** - **窗口管理**:通过SurfaceFlinger等组件实现窗口的绘制和渲染。 - **消息系统**:负责处理来自触摸屏或其他输入设备的...
支持Linux、Android、iOS等多平台接入,通过API接口处理资源访问和设备调用。 4. **业务逻辑层** 业务逻辑层封装了核心业务功能,如对象创建、修改、接口调用等。包含医嘱、检查、检验和体征等多个功能子系统,...
Android是一种基于Linux内核的开源操作系统,其开放性是其最大魅力所在,吸引了众多开发者积极参与应用开发。GPS(全球定位系统)则是实现地理位置服务的关键技术,通过接收卫星信号实现全球范围内的精确定位,提供...
1.2 跨平台性:QT支持多种操作系统,包括Windows、Linux、Mac OS、Android和iOS等,这使得基于QT的应用具有广泛的适用性。 1.3 QML:QT引入了QML,这是一种声明式语言,用于快速构建用户界面,与C++结合使用,能够...
操作系统的选择和定制至关重要,例如,可以选择基于Android或Linux的操作系统,并根据电子政务需求进行优化,增加如政务新闻推送、在线服务接口等功能。同时,为了保证数据安全,控制装置需要具备良好的安全防护机制...
为分类目录计算机可访问性,自然语言处理平台/操作系统具有已安装的软件/先决条件Linux 视窗Mac OS X 作为应用程序(包括所有软件) Android(仍在建设中)二手软件/先决条件Python 2.7 NLTK 2.0.4 Kivy 1.9 ) ...
- 本文介绍了如何在Linux Mint 15操作系统上编译Chromium for Android版本。 - 包括安装必要工具、配置环境变量、下载源码等步骤。 - **注意事项**: - 确认系统兼容性和资源充足。 - 遵循官方指南,确保每个...
影片评论NeoAxis编辑器支持的平台Windows 7+ x64 Mac(WIP) Linux(WIP)支持平台Windows 7+ x64 Android 8.0+ ARM64(奥利奥) UWP x64(通用Windows,Xbox,Windows应用商店) ...建设(非常容易) 您需要带有...