- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
02 windows 应用程序架构分析
第二章 WINDOWS应用程序结构
创建窗口只需调用CreateWindow 函数即可,但实际上并不这么简单。 但实际上并非真得这么简单。虽然创建窗口的函数确实被命名为CreateWindow, 但您将发现 CreateWindow的第一个参数就是所谓的“窗口类名称”,并且该窗口类连接所谓的“窗口过程”。在我们调用CreateWindow之前,有一点背景知识会对您大有帮助。
进行Windows程序设计,实际上是在进行一种面向对象的程序设计(OOP)。这一点在Windows中使用得最多的对象身上表现最为明显。 这种对象正是Windows之所以命名 为“Windows”的原因,它具有人格化的特征,这就是那个叫做“窗口”的对象。一、总体结构 桌面上最明显的窗口就是应用程序窗口。这些窗口含有显示程序名称的标题栏、菜单,甚至可能还有工具栏和滚动条。另一类窗口是对话框,它可以有标题栏也可以没有标题栏。 装饰对话框表面的还有各式各样的按钮、单选钮、复选框、列表框、滚动条和文本输入区域。其中每一个小的可视对象都是一个窗口。更确切地说,这些都称为“子窗口”或“控件窗口”或“子窗口控件”。 作为对象,用户会在屏幕上看到这些窗口,并通过键盘和鼠标直接与它们进行交互操作。更有趣的是,程序员的观点与用户的观点极其类似。窗口以“消息”的形式接收窗口的输入,窗口也用消息与其他窗口通讯。对消息的理解将是学习如何编写Windows程序必须逾越的障碍之一。 这有一个windows的消息示例:我们知道,大多数的windows程序都有大小合适的应用程序窗口。也就是说,您能够通过鼠标拖动窗口的边框来改变窗口的大小。通常,程序将通过改变窗口中的内容来响应这种大小的变化。是Windows本身而不是应用程序正在处理与用户重新调整窗口大小相关的全部代码。由于应用程序能改变其显示的格式,所以它也“知道”窗口大小改变了。 应用程序是如何知道用户改变了窗口的大小的呢?由于程序员习惯了常规的字符模式程序,操作系统没有设置将此类消息通知给用户的机制。问题的关键在于理解Windows所使用的体系结构。当用户改变窗口的大小时,Windows给程序发送一条消息指出新窗口的大小。然后程序就可以调整窗口中的内容,以反映大小的变化。“Windows给程序发送消息。”我们希望读者不要对这句话视而不见。它到底表达了什么意思呢?我们在这里讨论的是程序代码,而不是一个电子邮件系统。操作系统怎么给程序发送消息呢?其实,所谓“Windows给程序发送消息”,是指Windows调用程序中的一个函数,该函数的参数描述了这个特定消息。这种位于Windows程序中的函数被称为“窗口过程”。 无疑,读者对程序调用操作系统的思路是很熟悉的。例如,程序在打开磁盘文件时就要使用有关的系统调用。读者所不习惯的,可能是操作系统调用程序,而这正是Windows面向对象体系结构的基础。 程序创建的每一个窗口都有相关的窗口过程。这个窗口过程是一个函数,既可以在程序中,也可以在动态链接库中。Windows通过调用窗口过程来给窗口发送消息。窗口过程根据此消息进行处理,然后将控制返回给Windows。 更确切地说,窗口通常是在“窗口类”的基础上创建的。窗口类标识了处理窗口消息的窗口过程。使用窗口类使多个窗口能够基于同一个窗口类,并且使用同一个窗口过程。例如,所有Windows程序中的所有按钮均基于同一个窗口类。这个窗口类与一个位于Windows动态链接库(处理所有的按钮窗口消息)的窗口过程相联系。在面向对象的程序设计中,对象是代码与数据的组合。窗口是一种对象,其代码是窗口过程。数据是窗口过程保存的信息,以及Windows为每个窗口系统中那个窗口类保存的信息。窗口过程处理给窗口发送的消息。这些消息经常是告知窗口,用户正使用键盘或鼠标进行输入。这正是按钮窗口知道它被“按下”的奥妙所在。在窗口大小改变或窗口表面需要重画时,由其他消息通知窗口。 Windows程序开始执行后,Windows为该程序创建一个“消息队列”。这个消息队列用来存放该程序可能创建的各种不同窗口的消息。程序中有一小段代码,叫做“消息循环”,用来从队列中取出消息,并且将它们发送给相应的窗口过程。有些消息直接发送给窗口过程,不用放人消息队列中。如果您对这段有关Windows体系结构的过于简略的描述将信将疑,就让我们去看看在实际的程序中,窗口、窗口类、窗口过程、消息队列、消息循环和窗口消息是如何相互配合的。这或许对您会有些帮助。创建一个窗口首先需要注册一个窗口类,那需要一个窗口过程来处理窗口消息。这包 括一段几乎出现在每一个Window程序中的固定代码。程序2.1所示的HELLOWIN程序就是一个包括这段固定代码的简单程序。二、程序2
您可能关注的文档
最近下载
- 2025年甘肃省武威市凉州区发放镇招聘专业化管理大学生村文书笔试备考试题及答案解析.docx VIP
- 中国宫腔镜诊断与手术临床实践指南(2023年).pptx VIP
- 2025年法律职业资格(客观题)真题含答案.docx VIP
- 展板版式设计.ppt VIP
- 2025年全国司法考试客观题试卷及答案.docx VIP
- 职能科室对医技科室医疗质量督查记录表(检验科、放射科、超声科、功能科、内镜室).pdf VIP
- 中国宫腔镜诊断与手术临床实践指南(2023版).pptx VIP
- 血透患者心理健康宣教ppt.pptx
- 【新教材】英语必修第二册(新人教版)教材习题参考答案.pdf VIP
- 手机数据恢复精灵误删信息轻松恢复.PDF VIP
文档评论(0)