回调函数的疑惑(100分)

  • 主题发起人 主题发起人 trustzgb
  • 开始时间 开始时间
T

trustzgb

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手解释一下,delphi中回调函数是怎么回事情,小弟看了许久都没有弄清楚
 
不要被它奇怪的名字吓住,其实就是一个函数指针。
 
只是函数中的参数是函数类型!
以下是示例。
function power2(x:integer):integer;
begin
result:=x*x;
end;

function power3(x:integer):integer;
begin
result:=x*x*x;
end;

type
Tpower=function (x:integer):integer;
function getPower(f:TPower;x:integer):integer;
//这里的 f 就是一个回调函数
begin
Result:=f(x);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(getPower(power2,3)));
showmessage(inttostr(getPower(power3,3)));
end;

 
简单的说回调函数就是你在调用windows消息的时候,windows处理或完成消息的时候返回的
一些消息信息,这些消息通过你的函数地址,返回到你的函数中去,让你来处理
 
type TCallbackProc=function(a:Integer):Integer;
function CallbackProc(a:Integer):integer;
begin
Result:=a;
end;

function UseCallbackProc(ACallbackProc:TCallbackProc;n:Integer):Integer;
begin
Result:=ACallbackProc(n);
end;

begin
UseCallbackProc(@CallbackProc,10);
end;
 
嘿嘿jsxjd说的简易明了!佩服!
 
to:jsxjd、huawdg
大概有点明白了
一般在什么样的情况下,需要用函数(函数的地址)作为函数的参数?
谢谢,
 
API函数中有很多需要使用回调函数
你自己做的DLL的引出函数也可能需要使用回调函数
 
回条函数就是指针而已,比如类里面的事件其实也可以说是回条函数。
 
多人接受答案了。
 
后退
顶部