文档详情

windows窗口的style解析.docx

发布:2017-01-07约1.58万字共35页下载文档
文本预览下载声明
窗口特征窗口类型3重叠窗口3弹出窗口3子窗口3分层窗口(透明窗口)5信息窗口5窗口关系6前景和背景窗口6奴隶窗口7Z序7窗口显示状态7活动窗口8禁用窗口8界面窗口8最小化、最大化和恢复窗口9窗口大小和位置10默认的大小和位置10可调大小10系统命令10大小和位置函数11大小和位置的消息11窗口动画12窗口布局和镜像12镜像对话框和消息框15镜像设备上下文不与窗口关联15窗口的销毁15窗口类型这部分包含下列主题,描述下列窗口类型。重叠窗口一个重叠窗口是一个顶级窗口的标题栏,边境和客户区;它可以作为应用程序的主窗口。它也可以有一个窗口菜单,最大化和最小化按钮以及滚动条。作为一个重叠窗口主窗口通常包括所有这些组件。通过在CreateWindowEX函数中指定WS_OVERLAPPED或WS_OVERLAPPEDWINDOW风格,应用程序可以创建一个重叠窗口。如果使用WS_OVERLAPPED风格,窗口有标题栏和边界,如果使用WS_OVERLAPPEDWINDOW风格,窗口有标题栏,上边界,窗口菜单,最大化和最小化按钮。弹出窗口弹出窗口是一种特殊类型的重叠窗口,用于对话框,消息框和其他临时窗口出现的外部应用程序的主窗口。弹出窗口的标题栏是可选的;否则,弹出窗口拥有和重叠窗口一样的WS_OVERLAPPED风格。通过在CreateWindowEX函数中选择WS_POPUP风格创建的弹出窗口,包含标题栏,指定的WS_CAPTION风格。使用WS_POPUPWINDOW风格创建的的弹出窗口,包含有一个边界和一个窗口菜单。WS_CAPTION风格必须结合WS_POPUPWINDOW风格才可以使窗口菜单可见。子窗口子窗口有WS_CHILD风格仅限于它的父窗口的客户区。一个应用程序通常使用子窗口来使其客户区划分为多个功能区域。你可以通过在CreateWindowEX函数中指定WS_CHILD风格来创建子窗口。一个子窗口必须有一个父窗口,父窗口可以是重叠窗口、弹出窗口,甚至是另一个子窗口。当你调用CreateWindowEX函数时可以指定父窗口。如果在CreateWindowEX函数中选择了WS_CHILD风格却没有指定父窗口,系统将不会创建这个子窗口。子窗口有客户区但不包含其他功能,除非明确要求。应用程序可以为子窗口指定标题栏,窗口菜单,最大化和最小化按钮,滚动条,但子窗口不能有菜单。如果应用程序指定了一个窗口句柄,则当创建子窗口类或者创建子窗口时,窗口句柄会被忽略。如果没有指定边框样式,系统将创建一个无边界的窗口。应用程序可以使用无边界的子窗口来划分父窗口的客户区,同时可保证划分对于用户是隐藏的。本节讨论如下:位置:系统总是将子窗口定位到与它关联的父窗口的客户区的左上角,不会有子窗口的一部分出现在其父窗口的边界外面。如果应用程序创建的子窗口大于父窗口或者定位子窗口的位置以至于其超出了父窗口的边界,系统将剪辑子窗口;也就是说,父窗口的客户区域外的部分不会显示。行为会影响父窗口也会影响子窗口,如下:父窗口子窗口销毁在父窗口被销毁之前销毁隐藏先于父窗口隐藏,子窗口可见仅限于父窗口可见移动在父窗口的客户区中移动,同时负责在移动后绘制父窗口的客户区显示在父窗口显示后显示剪辑:系统不会从父窗口的客户区自动剪辑子窗口,这意味着如果父窗口在子窗口所在的位置绘图,将会覆盖子窗口的相同区域。然而,如果父窗口是WS_CLIPCHILDREN风格,系统将不会这么做。如果子窗口被剪辑了,父窗口不能再画它。如果一个窗口有WS_CLIPCHILDREN或者WS_CLIPSIBLINGS风格,会有轻微的性能损失。每个窗口都占用系统资源,因此应用程序不能无限制的使用子窗口。为了最佳性能,需要在逻辑上划分其主窗口的应用程序应该在主窗口的窗口过程,而不是通过使用子窗口。关系到父窗口:应用程序可以改变现有的子窗口的父窗口通过调用SetParent函数。在这种情况下,系统将从旧的父窗口的客户区删除子窗口,同时将其移动到新的父窗口的客户区。如果SetParent函数指定一个空处理,桌面窗口将成为新的父窗口。在这种情况下,子窗口挂在桌面上,跳出所有的窗口边界外。GetParent函数用于检索子窗口的父窗口句柄。父窗口放弃部分的子窗口客户区,子窗口接收所有的输入。窗口类不需要每个子窗口的父窗口相同,这意味着应用程序可以填补子窗口的父窗口,使其看起来不同,执行不同的任务。举个例子,一个对话框可以包含许多类型的控件,每个子窗口,接受来自用户的不同类型的数据。子窗口只有一个父窗口,但父窗口可以有任意数量的子窗口。反过来,每个子窗口可以有子窗口。每个子窗口被称为后代原始父窗口的窗口。应用程序使用IsChild函数发现是否一个给定的窗口或者一个给定父窗口的子代窗口是否是一个子窗口。EnumChildW
显示全部
相似文档