- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载
第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 。
您可能关注的文档
最近下载
- 某某医院手术质量安全提升行动方案(2023-2025年).docx
- 草乌采收及初加工技术规范.pdf
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 嗜铬细胞瘤和副神经节瘤诊断治疗专家共识1护理课件.pptx VIP
- (全国Ⅰ卷)2017-2020年高考英语全国卷1试卷试题真题及答案.pdf
- 国开电大 《24211 学前儿童社会教育活动指导》期末考试题库(按字母排版) (1).pdf
- 嗜铬细胞瘤和副神经节瘤诊断治疗专家共识1.pptx VIP
- 嗜铬细胞瘤和副神经节瘤诊断治疗专家共识2020版.pptx VIP
- (全国Ⅱ卷)2017-2020年高考英语全国卷2试卷试题真题及答案.pdf
- 第八单元 第1课时 几分之一(教学课件)三年级数学上册人教版.ppt
文档评论(0)