3窗口和消息.pdfVIP

  • 2
  • 0
  • 约3.24万字
  • 约 21页
  • 2017-06-04 发布于河南
  • 举报
3窗口和消息

窗口和消息 壹佰软件开发小组 整理编 译 在前两章,程序使用了同一个函数MessageBox来向使用者输出文字。MessageBox函数会建立一个「窗 口」。在Windows中,「窗口」一词有确切的含义。一个窗口就是屏幕上的一个矩形区域,它接收使用者 的输入并以文字或图形的格式显示输出内容。 MessageBox函数建立一个窗口,但这只是一个功能有限的特殊窗口。消息窗口有一个带关闭按钮的标题 列、一个选项图标、一行或多行文字,以及最多四个按钮。当然,必须选择Windows提供给您的图标与按 钮。 MessageBox函数非常有用,但下面不会过多地使用它。我们不能在消息框中显示图形,而且也不能在消息 框中添加菜单。要添加这些对象,就需要建立自己的窗口,现在就开始。 自己的窗口 建立窗口很简单,只需呼叫CreateWindow函数即可。 好啦,虽然建立窗口的函数的确名为CreateWindow,而且您也能在/Platform SDK/User Interface Services/Windowing/Windows/Window Reference/Window Functions找到此文件,但您将发现 CreateWindow的第一个参数就是所谓的「窗口类别名称」,并且该窗口类别连接所谓的「窗口消息处理程 序」。在我们呼叫CreateWindow之前,有一点背景知识会对您大有帮助。 总体结构 进行Windows程序设计,实际上是在进行一种对象导向的程序设计(OOP)。这一点在Windows中使用得最 多的对象上表现最为明显。这种对象正是Windows之所以命名为「Windows」的原因,它具有人格化的特 征,甚至可能会在您的梦中出现,这就是那个叫做「窗口」的东西。 桌面上最明显的窗口就是应用程序窗口。这些窗口含有显示程序名称的标题列、菜单甚至可能还有工具列 和滚动条。另一类窗口是对话框,它可以有标题列也可以没有标题列。 装饰对话框表面的还有各式各样的按键、单选按钮、复选框、清单方块、滚动条和文字输入区域。其中每 一个小的视觉对象都是一个窗口。更确切地说,这些都称为「子窗口」或「控件窗口」或「子窗口控 件」。 作为对象,使用者会在屏幕上看到这些窗口,并通过键盘和鼠标直接与它们进行交互操作。更有趣的是, 程序写作者的观点与使用者的观点极其类似。窗口以「消息」的形式接收窗口的输入,窗口也用消息与其 它窗口通讯。对讯息的理解将是学习如何写作Windows程序所必须越过的障碍之一。 这有一个Windows的消息范例:我们知道,大多数的Windows程序都有大小合适的应用程序窗口。也就是 说,您能够通过鼠标拖动窗口的边框来改变窗口的大小。通常,程序将通过改变窗口中的内容来响应这种 大小的变化。您可能会猜测(并且您也是正确的),是Windows本身而不是应用程序在处理与使用者重新 调整窗口大小相关的全部杂乱程序。由于应用程序能改变其显示的样子,所以它也「知道」窗口大小改变 了。 应用程序是如何知道使用者改变了窗口的大小的呢?由于程序写作者习惯了往常的文字模式程序,操作系 统没有设置将此类消息通知给使用者的机制。问题的关键在于理解Windows所使用的架构。当使用者改变 窗口的大小时,Window给程序发送一个消息指出新窗口的大小。然后程序就可以调整窗口中的内容,以响 应大小的变化。 「Windows给程序发送消息。」我们希望读者不要对这句话视而不见。它到底表达了什么意思呢?我们在 这里讨论的是程序代码,而不是一个电子邮件系统。操作系统怎么给程序发送消息呢? 其实,所谓「Windows给程序发送消息」,是指Windows呼叫程序中的一个函数,该函数的参数描述了这个 特定消息。这种位于Windows程序中的函数称为「窗口消息处理程序」。 无疑,读者对程序呼叫操作系统的做法是很熟悉的。例如,程序在打开磁盘文件时就要使用有关的系统呼 叫。读者所不习惯的,可能是操作系统呼叫程序,而这正是Windows对象导向架构的基础。 程序建立的每一个窗口都有相关的窗口消息处理程序。这个窗口消息处理程序是一个函数,既可以在程序 中,也可以在动态链接库中。Windows通过呼叫窗口消息处理程序来给窗口发送消息。窗口消息处理程序 根据此消息进行处理,然后将控制传回给Windows。 更确切地说,窗口通常是在「窗口类别」的基础上

文档评论(0)

1亿VIP精品文档

相关文档