先要说的是在Delphi中回调函数是以全局函数的形式定义的。也就是不归属某个类的函数。代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type THDfun = function (a,b: Integer): Integer; stdcall; //定义一个回调函数的类型 type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } function useHDfun(a,b: Integer; HDfun: THDfun): Integer; //这个函数会用THDfun的函数指针来调用myHDfun end; var Form1: TForm1; implementation {$R *.dfm} function myHDfun(a,b: Integer): Integer; stdcall; //回调函数是全局数,不属于某个类 begin result := a + b;//返回两个数相加 end; procedure TForm1.btn1Click(Sender: TObject); var i : Integer; myfun : THDfun; //声明一个的指针 begin myfun := myHDfun; //让指针指向要回调的函数 i:= useHDfun(1,2,myfun); //把函数指针作为参数 ,就是使用函数指针 // i:=useHDfun(1,2,@myHDfun); //也可以用"@"直接取函数的指针作为参数 ShowMessage(IntToStr(i)); end; function TForm1.useHDfun(a, b: Integer; HDfun: THDfun): Integer; begin result := HDfun(a,b); //在这个函数里用HDfun这个函数指针去调用myHDfun这函数 end; end.