现在的位置: 首页 > 综合 > 正文

[翻译]-WinCE 程序设计 (3rd 版)–4.1 子窗口

2013年04月22日 ⁄ 综合 ⁄ 共 837字 ⁄ 字号 评论关闭

子窗口
每个窗口是通过父子关系体系连接到一起的。应用程序创建一个没有父亲的主窗口,称为顶层窗口。该窗口可能包含(也可能没有包含)有窗口,称为子窗口。子窗口会被父窗口裁减。也就是说,子窗口超出父窗口边沿的部分是不可见的。当父窗口被销毁时,子窗口自动被销毁。当父窗口移动的时候,子窗口随父窗口一起移动。

从程序角度看子窗口同顶层窗口是一样的。您可以使用CreateWindow或CreateWindowsEx函数来创建它们,和顶层窗口一样,每个子窗口都有一个窗口过程来处理消息,并且每个都可以包含自己的子窗口。要创建子窗口,需要将CreateWindow或CreateWindowEx的参数dwStyle设置为WS_CHILD。另外,对在顶层Windows CE窗口中没有使用的hMenu参数,可以传一个ID用以引用该子窗口。

在Windows CE下,顶层窗口和子窗口之间还有另外一个主要的不同点。Windows CE shell只给具有WS_OVERLAPPED和WS_VISIBLE风格的顶层窗口发送WM_HIBERNATE消息。(这种情况下的窗口可视与用户是否可以看见是无关的。如果有其它窗口在Z轴方向盖住了该窗口,该窗口对系统是可见的,但用户是看不到的。)这意味着不能发送WM_HIBERNATE消息给子窗口和大部分对话框。顶层窗口要么在需要的时候手工发送WM_HIBERNATE消息给它们的子窗口,要么自己执行所有必要的工作来减少应用程序的内存使用量。在使用标准"Explorer shell"的Windows CE系统里,支持在任务栏上显示应用程序按钮,而用于判断WM_HIBERNATE消息目标窗口的规则,一样适用于判断哪些窗口获得了任务栏上的按钮。

窗口除了有父子关系外,还有一种拥有和被拥有的关系。被拥有的窗口并不被其拥有者裁剪。但是,被拥有的窗口总是出现在拥有者的Z坐标的上方。如果拥有者最小化了,它拥有的所有窗口都被隐藏。同样地,如果该窗口被销毁,其拥有地所有窗口都被销毁。

抱歉!评论已关闭.