创建窗口时,应用程序必须提供以下信息:
*窗口类
*窗口名称
*窗口风格
*家长或所有者窗口
*尺寸
*位置
*位置
*子窗口标识符或菜单句柄
*实例句柄
*创建数据
以下部分将介绍这些属性。
窗类
每个窗口属于窗口类。在创建该类的任何窗口之前,应用程序必须注册一个窗口类。【窗口类】定义了窗口外观和行为的大部分方面。窗口类的主要组件是【窗口程序】,该函数接收并处理发送到窗口的所有输入和请求。Windows以【消息】的形式提供输入和请求。有关窗口类,窗口过程或消息的更多信息,请参阅窗口类,窗口程序或消息和消息队列.
窗口名称
一个窗口可以有一个名字。A 【窗口名称】(也称为【窗口文字】)是标识用户窗口的文本字符串。主窗口,对话框或消息框通常在其标题栏中显示其窗口名称(如果存在)。对于控件,窗口名称的外观取决于控件的类。按钮,编辑控件或静态控件在控件占用的矩形内显示其窗口名称。列表框,组合框或静态控件不显示其窗口名称。
应用程序使用SetWindowText功能在创建窗口后更改窗口名称。它使用GetWindowTextLength和GetWindowText函数从窗口中检索当前窗口名称文本。
窗口风格
每个窗口都有一个或多个窗口样式。一个【窗口风格】是一个命名的常量,它定义窗口的外观和行为的一个方面,这个窗口的类没有指定。例如,SCROLLBAR类创建一个滚动条控件,但是SBS_HORZ和SBS_VERT样式决定是创建一个水平还是垂直的滚动条控件。几个窗口样式适用于所有窗口,但大多数适用于特定窗口类的窗口。Windows,在某种程度上,该类的窗口过程,解释样式。
家长或业主窗口
一个窗口可以有一个父窗口。具有父级的窗口称为【子窗口】.【父窗口】提供用于定位子窗口的坐标系。有父窗口会影响窗口的外观;例如,子窗口被剪切,使得子窗口的任何部分不能出现在其父窗口的边界之外。没有父或者其父对象是桌面窗口的窗口称为【顶级窗口】.应用程序使用EnumWindows函数来获取每个顶级窗口的句柄。EnumWindows将每个顶级窗口的句柄传递给应用程序定义的回调函数EnumWindowsProc.
一个窗口可以拥有或由另一个窗户拥有。所有的窗口总是出现在其所有者窗口的前面,当其所有者窗口最小化时被隐藏,并在其所有者窗口被销毁时被销毁。
位置,大小和位置在Z订单
每个窗口都有位置,大小和Z位置。该位置是窗口左上角的坐标,相对于屏幕的左上角,或者在子窗口的情况下,是父窗口的客户区域的左上角。窗口的大小是以像素为单位的宽度和高度。窗口在【Z订单】中的位置是窗口在堆叠的重叠窗口中的位置。有关详细信息,请参阅Z订单.
子窗口标识符或菜单句柄
子窗口可以有一个【子窗口标识符en】,一个与子窗口关联的独特的应用程序定义值。子窗口标识符在创建多个子窗口的应用程序中特别有用。创建子窗口时,应用程序指定子窗口的标识符。创建窗口后,应用程序可以使用SetWindowLong功能更改窗口的标识符,也可以使用GetWindowLong功能检索该标识符。
每个窗口,除了一个子窗口,可以有一个菜单。应用程序可以通过在注册窗口的类或创建窗口时提供菜单句柄来包括菜单。
实例句柄
每个基于Win32的应用程序都有一个与之关联的实例句柄。Windows在应用程序启动时向应用程序提供实例句柄。因为它可以运行同一应用程序的多个副本,Windows会在内部使用实例句柄来区分应用程序的一个实例。应用程序必须在许多不同的窗口中指定实例句柄,包括那些创建窗口的窗口。
创建数据
每个窗口都可以有与之相关联的应用程序定义的创建数据。当窗口首次创建时,Windows会将一个指向数据的指针传递到正在创建的窗口的窗口过程。窗口过程使用数据来初始化应用程序定义的变量。