DELPHI中回调函数的使用计算机等级考试

文章作者 100test 发表时间 2010:01:01 09:36:12
来源 100Test.Com百考试题网


  回调函数及其使用
  1回调函数的概述
  回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象。这个函数就是调用者和被调用者之间的一种通知约定,当约定的事件发生时,被调用者(一般会包含一个工作线程)就会按照回调函数地址调用该函数。
  这种方式,调用者在一个线程,被调用者在另一个线程。
  消息:
  消息也可以看作是某种形式的回调,因为消息也是在初始化时由调用者向被调用者传递一个句柄和一个消息编号,在约定的事件发生时被调用者向调用者发送消息。
  这种方式,调用者在主线程中,被调用者在主线程或者工作线程中。
  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、然后根据此原形定义一个相应的函数或过程,对于这个函数或过程来说名字没有什么要求,对函数其参数的类型和返回值的类型必须和定义的回调函数类型完全一致,对于过程来说,只需要其参数类型一样就可以了。
  例:根据上面的函数和过程的原形定义一个相应的函数和一个相应的过程。www.Examda.CoM考试就到百考试题
  函数原形定义:
  FunctionHdFunExample(k:integer,sExam:string):integer. stdcall.
  过程定义:
  procedureHdProExample(sExam:string).stdcall.
  3、在程序中实现此回调函数或着过程;
  Function HdFunExample(k:integer,sExam:string):integer.stdcall.
  Begin
  End.
  procedureHdProExample(sExam:string).stdcall.
  begin
  end.
  4、调用过程;
  回调函数一般作为系统的某个函数的入口地址;
  根据调用函数的原形:
  假设有如下调用函数:
  functionDyHdFunExample(HdFun:THDFunction.I:integer):boolean.
  注:
  在调用函数中通过对函数指针的处理可以直接调用回调函数(即调用函数中的那个是回调函数类型的参数,直接操作它),使回调函数履行一定的操作。即在调用函数中实现回调函数的功能。
  调用:
  var
  I:integer.
  begin
  I:=DyHdFunExample(@HdFunExample,i).
  //…….
  End.
  3举例说明
  示例程序在H:\\ 回调函数示例\\ 目录下面。
  回调函数的使用主要在于windows原有的API函数,但对于用户的自定义的调用函数一般在于动态连接库中。常规的同一个工程下面一般不需要使用回调函数。

  编辑特别推荐:

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  如何应付二级考试中的公共基础知识



相关文章


终于可以不用任何控件作出XP风格的程序了计算机等级考试
一个C 程序员的Delphi学习笔记计算机等级考试
计算机二级辅导:Delphi编程规范1.0.0.0计算机等级考试
在Delphi中使用指针参数计算机等级考试
DELPHI中回调函数的使用计算机等级考试
Delphi版OpenGL样例代码导游计算机等级考试
DELPHI8操作符重载的例子计算机等级考试
Delphi实现对注册表的监视和扫描计算机等级考试
使用Delphi创建IIS虚拟目录计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛