- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
013-核心技术.pdf
下载 第1 3章 核 心 技 术 本章内容: • 高级消息处理 • 防止同时出现多个应用程序实例 • 使用D e l h p i 的B A S M • 使用挂钩 • 使用C / C + + 的O B J文件 • 使用C + +类 • 替换 • 获得包的信息 本章将介绍一些在D e l p h i 中的高级编程技术。在这一章里,你将更直接地接触到Win32 API ,并且 要介绍一些V C L没有提供的功能。稍后,你将学习到这些概念:窗口过程、多实例、窗口挂钩以及在 D e l p h i与C + +之间共享代码。 13.1 高级消息处理 在第5章“理解Wi n d o w s消息”中,我们曾讲过窗口过程是一种函数,当一个窗口收到消息时由 Wi n d o w s来调用它。在每个应用程序对象中都包含一个窗口过程,应用程序对象利用它来接收所有被 发送到应用程序的消息。TA p p l i c a t i o n类利用O n M e s s a g e ( )事件通知消息的到来。 TA p p l i c a t i o n . O n M e s s a g e 只在应用程序的消息队列接收到一个消息时才被触发 (在第5章中有关于消 息的讨论) 。一般应用程序接收到的消息是与窗口管理有关的消息 (例如W M _ PA I N T和W M _ S I Z E ) ,或由 P o s t M e s s a g e ( ) 、P o s t A p p M e s s a g e ( )或B r o a d c a s t S y s t e m M e s s a g e ( )等A P I 函数发送出的消息。但是,由于 Wi n d o w s或S e n d M e s s a g e ( )有可能会绕过消息队列直接将消息发送给窗口过程。当发生这种情况时, TA p p l i c a t i o n . O n M e s s a g e就不会被触发。 13.1.1 子类化 为了知道什么时候一个消息被发送到应用程序,必须用自己的窗口过程代替 A p p l i c a t i o n 的窗口过 程。当在自己的窗口过程中对消息处理完后,要把消息再传递给原窗口过程。这样的过程就叫做子类 化窗口。 可以传递一个常量 G W L _ W N D P R O C给Win32 API 函数S e t Wi n d o w L o n g ( )来指定一个新的窗口过 程。窗口过程可以是以下两种格式 :一是利用A P I定义;二是利用D e l p h i使窗口方法作为窗口过程。 注意 当子类化一个VCL窗口的窗口过程时,可能由于窗口的句柄被重复创建而导致应用程序 失败。使用子类化技术一定要小心。一种更为安全的使用方法是使用 A p p l i c a t i o n . H o o k M a i n - Window() 。我们将在后面讨论它。 1. 一个Win32 API 的窗口过程 一个A P I 的窗口过程必须像这样声明: 第1 3章 核 心 技 术 3 9 3 下载 声明中,H a n d l e参数用于标识目标窗口;M s g是一个消息;w P a r a m 、l p P a r a m参数含有消息的附加 信息。函数的返回值要依靠收到的消息确定。需要特别注意,此函数必须用 s t d c a l l作为调用约定。 可以这样使用S e t Wi n d o w L o n g ( )函数给应用程序的窗口指定窗口过程: 在此调用后,返回一个指针类型的 W P r o c指向旧的窗口过程。对这个值的保留是很必要的,因为 有些消息可能需要传递给旧的窗口过程。下面是一个窗口过程的实现示例: 清单 1 3 - 1列出了S c W n d P r c . p a s单元的代码,程序中利用自己的窗口过程代替了 A p p l i c a t i o n对象的 窗口过程来处理自定义的消息D D G M _ F O O M S G 。
您可能关注的文档
最近下载
- 2024-2030全球商业气象服务行业调研及趋势分析报告.docx
- 高考英语复习读后续写练习+“千层面之爱”+传递全球温暖+课件.pptx VIP
- 新教材 人教A版高中数学选择性必修第一册全册各章节 知识点考点汇总及解题方法提炼.pdf VIP
- Midea 美的 R22W01BW11SECN扫地机器人 说明书.pdf
- 高考英语复习读后续写练习:爱心传递:善举循环的温暖故事+课件.pptx VIP
- 年产15万吨苯酚丙酮项目初步设计说明书.doc
- 燃气设备设施定期检查制度.docx VIP
- 内黄县各级文物保护单位一览表(2024版).docx VIP
- 高考英语复习读后续写练习:寒冬里的温暖与人性光辉+课件.pptx VIP
- 不收版面费的中文期刊(小木虫).doc VIP
文档评论(0)