上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3.9 窗口继承关系
一个窗口A被创建时,可以指定为另一个窗口B的子窗口,此时称窗口B为窗口A的父窗口。一个子窗口只能有一个父窗口,但一个父窗口可以有多个子窗口,同时一个子窗口也可以是另一个子窗口的父窗口。如果窗口被创建时没有指定父窗口,则当前活跃窗口即为其父窗口,若当前无活跃窗口,则被创建的窗口为基窗口。
子窗口不能显示在其父窗口和任何祖先窗口的后面,风河WindML图形窗口系统使用MDI(Multi-Document Interface)多文档界面格式,子窗口被剪切到父窗口中显示。同时,WindML图形库中不存在模态窗口。一个对象空间的窗口对另一个对象空间中的任何窗口不可见,因此一个对象空间的窗口不能与另一个对象空间内的窗口存在父子继承关系。
窗口的BLOCK属性不能错误地理解为父子关系,因为它不会强制一个窗口在另一个窗口的前端或后端显示,只是阻止窗口接收任何输入,BLOCK属性也适用于窗口的父窗口及其所有祖先窗口。窗口从后端移动到前端由窗口系统控制,从前端移动到后端则只受特定的窗口父子关系控制。当删除、隐藏或最小化某个窗口时,其子窗口也随之被删除、隐藏或最小化。例如,一个对话框显示后,其父窗口被隐藏,则该对话框也同时被隐藏,如果另一个窗口被显示时也需要该对话框,则该对话框不会被显示。
窗口父子关系在第一个窗口显示时建立,如果需要修改窗口的父子关系,则强烈建议按照删除窗口、重新加载窗口、指派新的父窗口、重新显示窗口的步骤操作。
[注意]由于窗口系统的限制和一些不可预期的结果,变更窗口的父窗口要慎重。