现在的位置: 首页 >> 图形图像 >> Illustrator >> 回调函数与Delphi的事件模型
添加时间:2005-12-7 来源:网教中国 作者: 未知
回调函数与Delphi的事件模型


回调函数:

  回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象。这个函数就是调用者和被调用者之间的一种通知约定,当约定的事件发生时,被调用者(一般会包含一个工作线程)就会按照回调函数地址调用该函数。

  这种方式,调用者在一个线程,被调用者在另一个线程。

  在Windows API中有一些函数使用回调函数,例如CreateThread、SetWindowLong等。对应的回调函数定义为如下形式:
  
  function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;
  
  procedure ThreadFunction(Ptr: Pointer);stdcall;

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

  Delphi事件模型:
  
  在Delphi的VCL中有很多可视化组件都是使用事件模型,例如TForm的OnCreate事件,其原理是:在设计时指定事件函数,在运行时事件触发,则会调用在设计时指定的事件函数。
  
  在机制上,Delphi事件模型与回调是一样的。但具体形式有些区别,纯的回调函数是全局函数的形式,而Delphi事件是对象方法的形式,即可以定义如下回调函数类型

  type
  
  TCallBackFunc = procedure (pData: Pointer) of object;
  
  这就使得Delphi事件只能在Delphi内部使用,而回调函数是可以跨语言的。
  
  另外还要注意,回调函数一般(在Delphi的组件是在主线程中)是在回调体中创建的线程,因此要有临界区保护。

上一篇:用JavaBean实现文件上载(五)应用实例 下一篇:Java FTP客户端类库比较
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·Adobe lllustrator的排版功能
·AI的Color面板使用技巧
·Illustrator 10新增绘图工具概述
·AI的Appearance面板浅析
·Illustrator制作精确六面体
·AI裁剪标志制作与使用
·Illustrator和PS制作美丽芦苇丛
·Illustrator绘制图案
·Illustrator 巧制透明按钮
·Illustrator CS的新功能
相关文章
 
最新文章
·Adobe lllustrator的排版功能
·Adobe Illustrator CS2十大新功
·Adobe Illustrater绘制萝卜
·Illustrator制作磨损图章效果
·AI的Color面板使用技巧
·Illustrator 10新增绘图工具概述
·AI的Appearance面板浅析
·Illustrator教你画粉红色的小猪
·Illustrator绘制美丽的玫瑰
·Illustrator制作精确六面体
Google