02windows应用程序架构分析

02windows应用程序架构分析

ID:32591907

大小:85.58 KB

页数:20页

时间:2019-02-13

02windows应用程序架构分析_第1页
02windows应用程序架构分析_第2页
02windows应用程序架构分析_第3页
02windows应用程序架构分析_第4页
02windows应用程序架构分析_第5页
资源描述:

《02windows应用程序架构分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第二章WINDOWS应用程序结构创建窗口只需调用CrcatcWindow函数即可,但实际上并不这么简单。但实际上并非真得这么简单。虽然创建窗口的函数确实被命名为CreateWindow,但您将发现CreateWindow的第一个参数就是所谓的“窗口类名称”,并且该窗口类连接所谓的“窗口过程”o在我们调用CreateWindow之前,有一点背景知识会对您大有帮助。WIND0WS应用程序的基本结构进行Windows程序设计,实际上是在进行一种面向对象的程序设计(OOP)o这一点在Windows中使用得最多的对象身上表现最为明显。这种对象正是Windows之所以命名

2、为“Windows"的原因,它具有人格化的特征,这就是那个叫做“窗口”的对象。一、总体结构桌面上最明显的窗口就是应用程序窗口。这些窗口含有显示程序名称的标题栏、菜单,甚至可能还有工具栏和滚动条。另一类窗口是对话框,它可以有标题栏也可以没有标题栏。装饰对话框表面的还有各式各样的按钮、单选钮、复选框、列表框、滚动条和文本输入区域。其屮每一个小的可视对彖都是一个窗口。更确切地说,这些都称为“子窗口”或“控件窗口”或“子窗口控件”。作为对象,用户会在屏幕上看到这些窗口,并通过键盘和鼠标直接与它们进行交互操作。更有趣的是,程序员的观点与用户的观点极其类似。窗口以“消息”

3、的形式接收窗口的输入,窗口也用消息与其他窗口通讯。对消息的理解将是学习如何编写Windows程序必须逾越的障碍之一。这有一个windows的消息示例:我们知道,大多数的windows程序都有大小合适的应用程序窗口。也就是说,您能够通过鼠标拖动窗口的边框来改变窗口的大小。通常,程序将通过改变窗口中的内容来响应这种大小的变化。是Windows木身而不是应用程序正在处理与用户重新调整窗口大小相关的全部代码。由于应用程序能改变其显示的格式,所以它也“知道”窗口大小改变了。应用程序是如何知道用户改变了窗口的大小的呢?由于程序员习惯了常规的字符模式程序,操作系统没有设置将

4、此类消息通知给用户的机制。问题的关键在于理解Windows所使用的体系结构。当用户改变窗口的大小时‘Windows给程序发送一条消息指出新窗口的大小。然后程序就可以调整窗口中的内容,以反映大小的变化。“Windows给程序发送消息。”我们希望读者不要对这句话视而不见。它到底表达了什么意思呢?我们在这里讨论的是程序代码,而不是一个电子邮件系统。操作系统怎么给程序发送消息呢?其实,所谓"Windows给程序发送消息”,是指Windows调用程序中的一个函数,该函数的参数描述了这个特定消息。这种位于Windows程序中的函数被称为“窗口过程”o无疑,读者对程序调用操

5、作系统的思路是很熟悉的。例如,程序在打开磁盘文件吋就要使用有关的系统调用。读者所不习惯的,可能是操作系统调用程序,而这正是Windows面向对象体系结构的基础。程序创建的每一个窗口都有相关的窗口过程。这个窗口过程是一个函数,既可以在程序中,也可以在动态链接库中。Windows通过调用窗口过程来给窗口发送消息。窗口过程根据此消息进行处理,然后将控制返回给Windowso更确切地说,窗口通常是在“窗口类”的基础上创建的。窗口类标识了处理窗口消息的窗口过程。使用窗口类使多个窗口能够基于同一个窗口类,并II使用同一个窗口过程。例如,所有Windows程序中的所有按钮均

6、基于同一个窗口类。这个窗口类与一个位于Windows动态链接库(处理所有的按钮窗口消息)的窗口过程相联系。在面向对象的程序设计中,对象是代码与数据的组合。窗口是一种对象,其代码是窗口过程。数据是窗口过程保存的信息,以及Windows为每个窗口系统中那个窗口类保存的信息。窗口过程处理给窗口发送的消息。这些消息经常是告知窗口,用户正使用键盘或鼠标进行输入。这正是按钮窗口知道它被“按下”的奥妙所在。在窗口大小改变或窗口表面需要重画时,由其他消息通知窗口。Windows程序开始执行后,Windows为该程序创建一个“消息队列”。这个消息队列用来存放该程序可能创建的各种

7、不同窗口的消息。程序中有一小段代码,叫做“消息循环”,用来从队列中取出消息,并且将它们发送给相应的窗口过程。有些消息直接发送给窗口过程,不用放人消息队列中。如果您对这段有关Windows体系结构的过于简略的描述将信将疑,就让我们去看看在实际的程序中,窗口、窗口类、窗口过程、消息队列、消息循环和窗口消息是如何相互配合的。这或许对您会有些帮助。创建一个窗口首先需要注册一个窗口类,那需要一个窗口过程来处理窗口消息。这包括一段几乎出现在每一个Window程序中的固定代码。程序2.1所示的HELLOWIN程序就是一个包括这段固定代码的简单程序。二、程序2.1#inelu

8、deLRESUL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。