活动窗口(Active),焦点窗口(Focus)和前景窗口(Foreground)之间的关系

活动窗口(Active),焦点窗口(Focus)和前景窗口(Foreground)之间的关系

任何一个时候,咱们的Windows桌面上总有一个最前台的窗口,其实说简单的,就是标题栏变成深蓝色的那个窗口,仅此一个,这个窗口就是前景窗口(Foreground Window),其余窗口就是后台窗口(Background Window)。那建立前景窗口的线程就是前景线程(Foreground Thread),这个线程并不必定就是应用程序的主线程。线程

线程内部会维护当前本身的活动窗口(Active Window)和焦点窗口(Focus Window), 焦点窗口其实只是窗口的一个属性,其实就是“焦点状态”是窗口的一个属性,而焦点窗口的顶层窗口就是活动窗口,举个例子:一个对话框中有一个按钮,当按钮 得到焦点的时候,那此按钮就是焦点窗口,则包含此按钮的对话框就是活动窗口,若出现窗口嵌套的状况,则最根的那个窗口才是活动窗口。队列

上面2段已经分别描述了前景窗口,活动窗口和焦点窗口的一些状况,但是前景窗口和活动窗口又是什么区别呢?事件

焦 点窗口只是一个局部的概念,并非全部的焦点窗口均可以得到键盘事件。只有前景线程的焦点窗口才能从系统队列中获得键盘事件,而前景线程中的活动窗口是前 景窗口。在任什么时候刻系统中都只可能有一个被激活的窗口,这就是前景窗口。这也就回答了上一节中的问题:与系统队列相链接的线程就是前景线程,而那个能够得 到键盘事件的窗口就是前景线程的焦点窗口。(以上文字引自开头的文章)it

相信仔细理解一下这些描述,应该能对你有所帮助了。class

相关文章
相关标签/搜索