Delphi 的消息机制浅探.docx

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

问题:Delphi的消息机制浅探(积分:100,回复:30,阅读:909)

分类:ObjectPascal(版主:menxin,cAkk)

来自:savetime,时间:2004-1-100:04:00,ID:2403549

Delphi的消息机制浅探

savetime2k@ 2004.1.9

[显示:小字体|大字体]

我从去年12月上旬开始等待李维的《InsideVCL》。我当时的计划是,在这本书的指导下深入学习Delphi。到了12月底,书还没有出来,我不愿再等,开始阅读VCL源代码。在读完TObject、TPersistant和TComponent的代码之后,我发现还是不清楚Delphi对象到底是怎样被创建的。于是我查看Delphi生成的汇编代码,终于理解了对象创建的整个过程(这里要特别感谢book523的帮助)。

此后我就开始学习DelphiVCL的消息处理机制。自从我写下《Delphi的对象机制浅探》,至今正好一个星期,我也基本上把DelphiVCL的消息处理框架读完了。我的学习方法就是阅读源代码,一开始比较艰苦,后来线索逐渐清晰起来。在此把自己对DelphiVCL消息机制的理解记录下来,便于今后的复习,也给初学Delphi或没有时间阅读VCL源代码的朋友参考(毕竟没有几个程序员像我这样有时间:)。由于学习时间较短,一定会有错误,请大家指正。

我在分析VCL消息机制的过程中,基本上只考查了三个类TObject、TControl和TWinControl。虽然我没有阅读上层类(如TForm)的代码,但我认为这些都是实现的细节。我相信 VCL消息系统中最关键的东西都在这三个类中。纲举而目张,掌握基础类的消息处理方法之后再读其他类的消息处理过程就容易得多了。

要想读懂本文,最低配置为:

了解Win32消息循环和窗口过程

基本了解TObject、TControl和TWinControl实现的内容熟悉Delphi对象的重载与多态

推荐配置为:

熟悉Win32SDK编程熟悉Delphi的对象机制

熟悉Delphi内嵌汇编语言

推荐阅读:

《Delphi的原子世界》

/

《VCL窗口函数注册机制研究手记,兼与MFC比较》

/delphibbs/dispq.asp?lid=584889

《Delphi的对象机制浅探》

/delphibbs/dispq.asp?LID=2390131

本文排版格式为:

正文由窗口自动换行;所有代码以80字符为边界;中英文字符以空格符分隔。

(作者保留对本文的所有权利,未经作者同意请勿在在任何公共媒体转载。)

目 录

===============================================================================

一个GUIApplication的执行过程:消息循环的建立

TWinControl.Create、注册窗口过程和创建窗口

补充知识:TWndMethod概述

VCL的消息处理从TWinControl.MainWndProc开始

TWinControl.WndProc

TControl.WndProc

TObject.Dispatch

TWinControl.DefaultHandler

TControl.Perform和TWinControl.Broadcast

TWinControl.WMPaint

以TWinControl为例描述消息传递的路径

===============================================================================

正 文

===============================================================================

一个GUIApplication的执行过程:消息循环的建立

===============================================================================

通常一个Win32GUI应用程序是围绕着消息循环的处理而运行的。在一个标准的C语言Win32GUI

程序中,主程序段都会出现以下代码:

while(GetMessage(msg,NULL,0,0)) //GetMessage第二个参数为NULL,

//表示接收所有应用程序产生的窗口消息

{

TranslateMess

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海海滋实业有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档