- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows系统的消息机制讲解
第1章 Windows系统的消息机制
对诸如PowerBuilder(后文简写为PB)、Visual Basic和Dephi等大多数可视化程序设计语言来讲,程序设计的核心是对象的事件、属性和方法,但对Windows系统本身而言,却是以消息处理为其控制机制。Windows把系统中的对象都作为窗口来对待,每个窗口都有一个用来标识其身份的句柄。Windows通过向窗口发送消息,在开发语言中转化为对象的事件,然后驱动对象,响应用户的动作。在许多面向对象的可视化程序设计语言中,Windows的众多消息已经演变成了对象的属性或方法。本章内容包括Windows系统的消息机制、消息的发送、消息的应用实例等。
1.1 Windows的工作机制
1.1.1 Windows 的工作方式——窗口、事件和消息
全面地讨论Windows的内部工作机制需要没有必要深入了解所有的技术细节。Windows的工作机制,简单地说就是个关键的概念:窗口、事件和消息。
不妨简单地将窗口看做带有边界的矩形区域。也许已经了解不同类型的窗口如Windows的资源管理器窗口、文字处理程序中的文档窗口或者弹出提示有约会信息的对话框。除了这些最普通的窗口外,实际上还有许多其他类型的窗口。命令按钮是一个窗口图标、文本框、选项按钮和菜单条也都是窗口。
Windows 操作系统通过给每一个窗口指定一个惟一的标识号(窗口句柄hWnd表示)来管理所有的窗口。操作系统连续地监视每一个窗口的活动或事件的信号。事件可以通过诸如单击鼠标或按下按键的操作而产生,也可以通过程序的控制而产生,甚至可以由另一个窗口的操作而产生。
每发生一次事件,将引发一条消息发送至操作系统。操作系统处理该消息并广播给其他窗口。然后,每一个窗口才能根据自身处理该条消息的指令而采取适当的操作(例如,当窗口解除了其他窗口的覆盖时,自身窗口)。
可以想象,处理各种窗口、事件和消息的所有可能的组合将有惊人的工作量。幸运的是,使摆脱了所有的低层消息处理。许多消息由自动处理了,其他的作为事件过程由编程者自行处理这样可以快速创建强大的应用程序而毋需涉及不必要的细节。.2 句柄的概念
在解释消息之前,首先了解系统如何准确地将消息发送到指定的窗口。当一个应用或多个应用运行后,会同时创建许多个窗口,Windows作为系统的“大总管”,那么它又是如何识别每一个窗口呢?在程序设计时,通过窗口的名称属性,为每个窗口命名,然后在程序其他部分把窗口名作为识别窗口的标识。这种通过为窗口命名来识别不同窗口的方法,对Windows系统来讲显然是不现实的。Windows系统是通过称之为句柄的标识符来识别每一个窗口。
句柄是系统动态分配给窗口的32位整型数标识值,常用hWnd表示,即英文handle to a window的缩写。大量API函数都需要窗口句柄作参数,或返回一个窗口或设备场境的句柄。句柄可以通俗地理解为Windows为系统中所有存在的窗口动态分配的身份识别号码。
在PB中,可以通过handle函数来取得窗口和控件的句柄,当声明API函数时,常把保存句柄的变量声明为Long或Ulong长整型数据类型。Windows为窗口和控件分配句柄标识是动态,同样的程序每次运行时和在不同计算机上运行时所分配的窗口句柄标识可能是完全不一样的。
窗口的句柄属性仅能在运行时访问,该属性对窗口的外观并没有任何影响,它仅作为API函数调用的参数或返回值,或其他需识别窗口或对象的地方。在后面章节中,读者将会看到几乎所有涉及窗口的API函数都需要传递hWnd参数,以便函数准确获得用户要处理的窗口或对象。
句柄作为由操作系统定义的惟一的长整型值,可以用它来引用窗体和控件等对象。在Windows系统中,API函数的调用常用的句柄包括窗口句柄,菜单句柄、设备对象句柄、设备场景句柄,等等。如果函数需要用句柄作为参数,则应该把参数声明为传值,对于返回句柄的API函数,应将返回的句柄值声明为Long或Ulong类型数据类型。句柄是一种标识符(ID)编号,而不是指针或者数值,不要试图对它们进行任何数学运算。
1.1.3 消息的概念
Windows系统是以消息处理为其控制机制,系统通过消息为窗口过程(windows procedure)传递输入。系统和应用两者都可以产生消息。对于每个输入事件,例如用户按下了键盘上的某个键、移动了鼠标、单击了一个控件上的滚动条,等等,系统都将产生一系列消息。此外,对于应用带给系统的变化,如字体资源的改变、应用本身窗口的改变,系统都将通过消息以响应这种变化。应用通过产生消息指示应用的窗口完成特定的任务,或与其他应用的窗口进行通信。
每个窗口都有一个处理Windows系统发送消息的处理程序,称为窗口程序。它是隐含在窗口背后的一段程序脚本,其中包含对事件进行
您可能关注的文档
最近下载
- 一二三级配电箱原理图施工临电平面图.pdf
- 2025年中国机器人传感器行业发展监测及发展趋势预测报告.docx
- 2025年江西工业工程职业技术学院单招职业倾向性测试题库及参考答案.docx VIP
- 虫害管理培训材料.ppt
- 门窗安装安全技术交底.docx VIP
- 2023年凹版油墨的现状与发展趋势.pptx
- 专题五 模型或原型的制作 考向二 木工工艺 学案(含解析)2025届高中通用技术.DOCX VIP
- 中国药物性肝损伤诊治指南(2023年版)解读.pptx
- 《“双减”背景下家校协同培养学生动机的研究》课题研究方案.doc
- 安徽《既有多层住宅加装电梯技术标准》DB34T4249-2022.pdf
文档评论(0)