首 页电脑文章电脑书下载客户留言
您当前的位置:LR电脑书籍网电脑文章程序设计Delphi技术 → 文章内容
回调函数在DELPHI中的使用
发布时间:2007-12-4 16:53:33

减小字体 增大字体

L R 小提示:保持身体与脚呈垂直的坐姿。

1 回调函数的概述
回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象。这个函数就是调用者和被调用者之间的一种通知约定,当约定的事件发生时,被调用者(一般会包含一个工作线程)就会按照回调函数地址调用该函数。
  这种方式,调用者在一个线程,被调用者在另一个线程。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

消息:

  消息也可以看作是某种形式的回调,因为消息也是在初始化时由调用者向被调用者传递一个句柄和一个消息编号,在约定的事件发生时被调用者向调用者发送消息。
  这种方式,调用者在主线程中,被调用者在主线程或者工作线程中。

   

Delphi事件模型:
   在Delphi的VCL中有很多可视化组件都是使用事件模型,例如TForm的OnCreate事件,其原理是:在设计时指定事件函数,在运行时事件触发,则会调用在设计时指定的事件函数。

  在机制上,Delphi事件模型与回调是一样的。但具体形式有些区别,纯的回调函数是全局函数的形式,而Delphi事件是对象方法的形式,即可以定义如下回调函数类型

  type

    TCallBackFunc = procedure (pData: Pointer) of object;

2 回调函数的使用说明
回调函数主要在两个场合使用,第一个是某些Windows的API要求用回调函数作为其参数地址,另一种是用户在某种特定的场合定义的某个函数需要使用回调函数作为其参数地址,对于用户的定义的函数来说,一般是当调用动态连接库中的函数时使用。

对于使用一个回调函数主要有以下几个步骤:

1、               定义一个回调函数类型,跟一般的函数过程的定义并没有什么区别,但其定义必须根据需要满足回调函数的函数要求,唯一的区别在于在函数或过程的定义后面必须声明其为windows标准调用;                           

例:

        type

THDFunction= function(I:integer;s:string):integer; stdcall;

对于过程的声明:

type

   THDProcedure=procedure(s:string); stdcall;

2、               然后根据此原形定义一个相应的函数或过程,对于这个函数或过程来说名字没有什么要求,对函数其参数的类型和返回值的类型必须和定义的回调函数类型完全一致,对于过程来说,只需要其参数类型一样就可以了。

例:根据上面的函数和过程的原形定义一个相应的函数和一个相应的过程。

函数原形定义:

Function HdFunExample(k:integer,sExam:string):integer; stdcall;

过程定义:

procedure HdProExample(sExam:string);stdcall;

[1] [2]  下一页

booyk52.com
L R 小提示:电脑操作者不宜一边操作电脑一边吃东西。
如果您觉得 LR电脑书籍网 网站还不错,请介绍给您的同事或朋友.http://www.book52.com

特别注意:本站所提供的书籍,技术文章,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。
[ ] [返回上一页] [打 印]
文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值: 100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

本类热门文章
相关文章
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 所有分类 - 网站地图