关于delphi回调函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于delphi回调函数相关的知识,希望对你有一定的参考价值。

function EnumWndProc(AWnd: HWND; AlParam: LPARAM): Boolean; stdcall;
var
szText: array[0..254] of char;
begin
if IsWindowVisible(awnd) then
begin
GetWindowText(awnd, @szText, 255);
Form1.combobox1.Items.Add(strPas(@szText));
end;
Result := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
EnumWindows(@EnumWndProc, 0);
end;

这个回调函数是怎么运行的,EnumWindows这个函数的返回值是什么,EnumWndProc中的第一个参数AWnd: HWND的值是怎么得来的。

这很好理解的
EnumWindows函数有两参数,第一个参数便是函数,第二个参数是lParam
@EnumWndProc是EnumWndProc的指针地址,将EnumWndProc作为参数传给EnumWindows,EnumWindows在自已的函数体中调用EnumWndProc并传给它两个参数AWnd,AlParam
AWnd就是窗口的句柄,EnumWndProc是你自已写的,怎么处理句柄由你决定。

回调函数最简单的理解就是:把一个函数作为参数给另一个函数据或过程去调用。
参考技术A BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam)
lpEnumFunc:指向一个回调函数指针。
lPararm:指定一个传递给回调函数附加参数。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。

该函数枚举所有屏幕上的顶层窗口,办法是先将句柄传给每一个窗口(传的句柄就EnumWndProc中的参数AWnd),然后再传送给应用程序定义的回调函数EnumWndProc。

AWnd这个参数也就是 是在枚举每个窗口时将这个窗口的句柄传给EnumWndProc

以上是关于关于delphi回调函数的主要内容,如果未能解决你的问题,请参考以下文章

DELPHI调用DLL时的回调函数问题

请大家解释一下Delphi的回调函数

delphi回调函数

Delphi 回调函数及property的使用

是否有可能在Delphi中对一个回调函数进行类型转换?

Delphi DLL 和 Delphi EXE 之间的回调功能