回调函数: 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括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的组件是在主线程中)是在回调体中创建的线程,因此要有临界区保护。

转载于:https://www.cnblogs.com/hnxxcxg/archive/2008/07/11/2941029.html

回调函数与Delphi的事件模型相关推荐

  1. Delphi编写事件模型客户端(2)

    上次写了事件模型类的定义,今天我来写一写如何实现这个类. 首先的两个函数我想稍微了解网络编程的人都会清楚.<?xml:namespace prefix = o ns = "urn:sc ...

  2. 回调函数与DOM事件

    原文:http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/ 先看如下代码: 1 document.addEventListener( ...

  3. http调用如何返回回调函数_Simulink(模型amp;函数调用发生模块)+Guide自写简单系统(五)+StateflowChart回调函数 (二)...

    Simulink:模型&函数调用发生模块 如下所示为模型模块以及函数调用发生模块: 使用模型模块可以双击在模块中选择具体路径中的文件进行配置:在使用时即可对模型提供一个链接的路径: 运行时效果 ...

  4. PHP回调函数的几种用法

    前言 最近在开发一个PHP系统,为了提高系统的扩展性,我想在系统中加入类似Javascript的事件处理机制,例如:我想在一篇新闻被添加以后,我想记录一下日志,用类似Javascript的代码,应该是 ...

  5. 彻彻底底了解回调函数

    什么是回调函数? 一,回调函数 我们经常在C 设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其 ...

  6. [学习笔记] PHP回调函数的实现方法 [转]

    目录 前言 全局函数的回调 静态函数的回调 对象方法的回调 php事件模型(观察者模式)的实现思路      前言 最近在开发一个PHP系统,为了提高系统的扩展性,我想在系统中加入类似Javascri ...

  7. redis的事件模型详解(结合Reactor设计模式)

    文章基于redis-4.0.1源码详细介绍一下redis的事件模型. 一.redis事件模型概览 redis是一个事件驱动的服务程序,在redis的服务程序中存在两种类型的事件,分别是文件事件和时间事 ...

  8. C++回调函数用法(zz)

    一.回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子 ...

  9. C++回调函数用法(zt)

    一回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函 ...

最新文章

  1. .net中下载文件的方法(转)
  2. apache2 默认端口修改
  3. XAML Namespace http://schemas.microsoft.com/expression/blend/2008 is not resolved
  4. ASP.NET高质量生成缩略图
  5. 【Linux系统编程】特殊进程之僵尸进程
  6. 移动端微信公众号开发中问题记录及解决方案
  7. 简单async/wait使用样例
  8. 个人简介页面如何设计?优秀案例给你灵感
  9. android library使用,Android:Library module的使用
  10. inputtextarea表单提示文字
  11. Excel VBA 打开对话框,获取文件夹路径
  12. python怎么连接excel_python怎么连接excel
  13. matlab模拟换热过程,第5章Hysys模拟换热过程.ppt
  14. qlv格式转换成mp4 视频格式转换
  15. 【es6学习】Babel 转码器详解
  16. try的动词用法_try的用法
  17. 自我检讨书(我与电脑)
  18. 毕业即月薪上万,但这才是悲催人生的开始
  19. 华为云618年中钜惠,服务器免费领三个月
  20. 20 w 新闻数据集分享

热门文章

  1. 【转】Android 获取本机号码(收集)
  2. HDU5709 : Claris Loves Painting
  3. MyEcplise安装Freemarker插件(支持.ftl文件)
  4. Buffer Cache Hit Ratio
  5. 推荐些在线小制作小工具
  6. Programming Pearls: Chatper3 Problem6 [Form letter generator]
  7. ubuntu16.04上安装gstreamer
  8. 用户态/内核态、用户栈/内核栈
  9. Spark编程模型几大要素
  10. C primer 第六章循环 习题6.7