发信人: skyice()
整理人: skyice(2000-03-17 23:06:21), 站内信件
|
窗口
Windows 应用程序中的窗口是指屏幕上的一个正方形区域,是应用程序
用来显示输出或接收用户输入的。使用窗口的目的是因为 Windows应用程序
需要与用户进行交互来完成某些任务,所以 Windows应用程序的首要任务就
是创建一个窗口。
桌面窗口
启动 Windows系统,它就会自动创建桌面窗口。桌面窗口是系统定义的
窗口,这个窗口绘制了屏幕的背景,作为 Windows应用程序显示窗口的基础。
桌面窗口使用了存放在位图(扩展名为 .BMP)中的一个位图来绘制屏幕
的背景,由这个位图所创建的图案被称为桌面壁纸。一般来讲,桌面窗口所用
的位图是在下面这个注册桌面壁纸的关键字所指定的文件中的。
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper
由系统配置的应用程序,如 Windows Control Panel,通过函数 SetD-
eskWallpaper指定另外一个位图文件名来改变桌面壁纸,SetDeskWallpaper
函数从指定的文件中安装位图,系统用这个位图绘制屏幕的背景。当然,也可
通过相关的 API 来改变该位图。
父窗口
窗口可以有一个父窗口,有父窗口的窗口称为子窗口,由父窗口提供的
坐标系统对于窗口进行定位,父窗口会影响窗口的外观。如果一个窗口没有
父窗口或者父窗口就是桌面窗口,则该窗口称为顶层窗口。应用程序可以通
过 EnumWindows函数来获取它的每一个顶层窗口的句柄,再由EnumWindows
函数把每一个顶层窗口的句柄传给应用程序所定义的回调函数。
子窗口
子窗口有一个子窗口标识,它是由应用程序定义的对应于该子窗口的一
个唯一的值。子窗口标识对创建多个子窗口的应用程序来讲是很有用的。
创建一个子窗口时,应用程序就为它设置一个子窗口标识,创建了子窗
口之后,就可通过 SetWindowLong 函数来改变窗口标识;通过 GetWind-
owLong 函数来获取该窗口标识。
窗口名
窗口可以有一个名字,窗口名(也称为窗口正文)是便于用户识别一个
窗口的正文字符串。主窗口、对话框或消息框一般是在其标题栏上显示窗口。
而对于控制,窗口名的外观取决于控制的类。按钮、编辑控制或静态控制是
在控制所占据的矩形框内显示其窗口名,列表框、组合框则不显示其窗口名。
应用程序在创建窗口以后可通过 SetWindowText 函数来改变窗口名;
通过 GetWindowTextLength 或 GetWindowText 函数来获取当前窗口名的
正文。
窗口句柄
创建了窗口之后,创建函数返回唯一的标识窗口的窗口句柄,应用程序
在其它函数中要用这个句柄来确保是对该窗口的操作。窗口句柄属于 HWND
数据类型;应用程序必须在说明一个窗口句柄的变量时使用该数据类型。
Windows 系统还提供了另外几个专用的常量,在某些函数中用来替换窗
口句柄,这些常量以 HWND_ 作为前缀。例如 HWND_TOP,HWND_BOTTOM。
尽管常量 NULL 不是一个窗口句柄,但应用程序可在一些函数中用它来
表明没有窗口受到影响。例如,将 CreateWindowEx 函数的 hwndParent
参数设置成 NULL,则所创建的窗口就无父窗口。有些函数可能返回 NULL而
不是一个句柄,表示给定的操作没有施加给任何窗口。
框架、客户以及子窗口
对于 MDI 应用程序,它有三类窗口:框架窗口、客户窗口以及若干个
子窗口。框架窗口与应用程序的主窗口相似,有重置大小的边框、标题栏、
SYSTEM 菜单、最小化按钮。应用程序必须为框架窗口注册一个窗口类并提
供一个支持它的窗口过程。
MDI 应用程序框架窗口的客户区显示输出,在 MDI 客户窗口输出显示。
MDI 的客户窗口是一种属于预注册窗口的子窗口,它作为子窗口的背景,同
时为创建、操作子窗口提供支持。
用户打开或创建一个文档时,客户窗口为该文档创建一个子窗口。由于
子窗口是要裁剪的,它只能在客户窗口中,不能移出去。
实例句柄
每个 Windows 应用程序都有一个与之相对应的实例句柄,Windows 系
统在应用程序开始的时候就为它提供了实例句柄。因为同一个应用程序可以
有多个拷贝,Windows 系统就是利用实例句柄来区分应用程序的不同实例。
应用程序必须为不同的窗口指定实例句柄,当然也包括那些创建窗口的实例。
子窗口与父窗口的关系
应用程序通过调用 SetParent 函数改变子窗口的父窗口,这种情况下,
Windows 系统从旧父窗口的客户区中删除该子窗口,并把它移到新父窗口的
客户区。如果 SetParent 函数指定一个 NULL 句柄,桌面窗口就成为其新
的父窗口,这样子窗口就画到桌面窗口上,在其它窗口边框的外面。GetPa-
rent 函数可用来获取子窗口的父窗口句柄。
禁止窗口
窗口是可以被禁止的,被禁止的窗口不再接收键盘或鼠标输入,但它能
接收来自其它窗口、其它应用程序以及 Windows 系统的消息。应用程序禁
止一个窗口是为了防止用户使用这个窗口。
缺省情况下,一个刚被创建的窗口是被允许的,但应用程序可以通过设
置 WS_DISABLED 风格来禁止一个新窗口,也可通过 EnableWindow 函数允
许或禁止一个存在的窗口。
活动窗口
活动窗口是应用程序的顶层窗口,也就是当前使用的窗口。任何时候系
统中只能有一个顶层窗口是活动的。用户可以通过单击窗口、使用 ALT+ESC
或ALT+TAB 组合键来激活一个顶层窗口。应用程序则调用SetActiveWindow
函数来激活一个顶层窗口。通过 GetActiveWindow 函数来获取当前活动创
建窗口的句柄。另外还可通过 SetWindowPos、DeferWindowPos、SetWin-
dowPlacement 函数来激活不同的顶层窗口。
窗口可见性
窗口既可以是可见的,也可以被隐藏。Windows 系统只在屏幕上显示一
个可见的窗口,对隐藏的窗口只是不进行绘制。如果一个窗口是可见的,用
户可通过窗口进行输入以及查看窗口的输出。如果窗口是隐藏的,则相当于
它被有效地禁止。隐藏的窗口可以处理来自 Windows 系统或其它窗口的消
息,但不接收用户的输入或显示输出。应用程序可通过 IsWindowVisible
函数来查询一个窗口是否可见,通过 ShowWindow、SetWindowPos、Def-
erWindowPos、SetWindowPosition 函数来显示或隐藏一个窗口。
窗口过程
窗口过程是一个函数,用来接收和处理所有发送到该窗口的消息,每个
窗口类都有一个窗口过程,同一窗口类所创建的窗口共用同一个窗口过程来
响应消息。
窗口过程一般不会忽略一条消息,如果它不处理某条消息,它就将该消
息传回系统进行默认处理,窗口过程是调用 DefWindowProc 函数来完成的,
由它完成一个默认的操作并返回消息结果。
窗口属性
窗口属性是指由一组由 SetProp 函数赋给窗口的数据,一个窗口属性
一般是特定窗口数据的句柄。用户可利用 SetProp 函数增加一窗口属性,
GetProp 函数访问一窗口属性,EnumPropEx 函数列出指定的窗口属性,
DelPropProc 函数删除一窗口属性。
-- 欢迎您到C语言版来!
欢迎光临BBS系统版!
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.90.249]
|
|