windows内核开发学习笔记三十三:windows子系统之窗口管理

       windows子系统的用户界面管理有一个层次结构,通常应用程序只是在一个默认的桌面运行。每个子系统会话都有自己的会话空间,属于某个会话的资源将从该会话空间中分配。当用户登录到windows中时,操作系统将为该用户建立一个会话;即使用户通过远程桌面或者终端服务连接到一个系统中,系统也会为该用户建立一个单独的会话。

        在一个会话中,有一个交互式窗口站,可能还有非交换式窗口站。在交互式窗口站中通常有三个桌面:登录桌面、默认桌面和屏幕保护桌面。通常运行的图形界面应用程序运行在默认桌面上。交互式窗口有独立的剪贴板、键盘、鼠标、显示器等,在三个桌面中,任何时刻只有有一个是激活的,输入输出设备归激活的桌面所有。

        在每个桌面中都有一个顶级窗口列表,这些窗口往往可以相互重叠,有系统菜单、最大/最小化按钮和滚动条等,通常各个图形界面应用程序的主窗口属于当前桌面的顶级窗口。在windows中,窗口可以有子窗口,子窗口占据父窗口的客户区域。因此,卓面上的窗口形成了一个层次结构。实际上一个窗口总是可以构建它自己的子窗口。

        windows为常用的窗口定义了一些窗口类(windows class),因而应用程序可以非常方便地创建这些窗口类的实例。应用程序如果要定义独特的窗口特性,可以生成一个窗口类,这个窗口类既可以是全新的,也可以是在系统已有窗口类的基础上定义得到。窗口类规定了其对象将如何响应各种消息,包括系统发送给它的消息和用户触发的消息。Windows窗口的编程模型是消息驱动的,每个窗口对象根据其窗口类指定的窗口过程来响应各种消息。

    windows子系统会话有一个RIT(Raw Input Thread)线程,负责从输入设备读取原始输入事件。然后生成消息,寄送到正确的线程消息队列中。每个包含用户界面元素的线程都应该及时地处理这些消息。通常的做法是在一个消息循环中,不停地获取消息,再分发给目标窗口,由目标窗口过程来响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jyl_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值