如题Delphi Dll中回调的使用。先感谢下!着急在线等!
解决方案 »
- 散分,奸问个问题,有没有用script这类控件的,推荐或评价一下啊
- 能将speedbutton和edit控件做成组合控件使用么?
- 能让透明flash在form上实现透明吗?
- 怎样得到程序式的ACCESS数据库的所有表名?
- 测试程序时系统崩溃了,再重启后许多已存盘的文件莫名其妙不见,请各位高手帮忙如何找回来!
- 字节转换的问题,高手请进
- 有用过ehlib和AdvanceStringGrid的吗?求助了!
- 求图像的自动对比度或自动色阶算法,
- *******请问各位高手,在关于图象存储方面有没有比较好的办法?
- 在DELPHI5里用什么方法俘获程序中出现的错误,让自己对出现的错误进行处理,而不是退出程序。以前用VB6的时候是用ON ERROR的
- 求一个表达式
- 想把一个过程写在基类中,但它的一些参数,却要从实际的窗体中来
uses
SysUtils,
Classes;
type
TCallBackProc = procedure(vi: PChar);
procedure Test(vs: PChar; cbp: TCallBackProc); stdcall;
begin
TCallBackProc(cbp)(vs);
end;
{$R *.res}
exports
Test;
begin
end.
//月亮老大发的链接不是很清楚了吗,还讲什么?
//你是想在dll中回调主调的函数???
//回调即把函数名A当作另一个函数B的参数使用
//有几个步骤:
//1.声明函数类型
//2.创建相应的函数体
//3.创建函数变量
//4.把函数名赋给变量(就是把函数指针赋给刚刚创建的函数变量)
//5.把这个变量放到B的参数中
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TFuncType = procedure (Msg: string) of Object;//声明类型 TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
procedure MyTestFunc(Msg: string) ;//创建与类型相同的函数 procedure CallbackFunc(F: TFuncType) ;//回调
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MyTestFunc(Msg: string) ;
begin
ShowMessage(Msg);
end;
procedure TForm1.CallbackFunc(F: TFuncType);
begin
F('ok');
end;procedure TForm1.btn1Click(Sender: TObject);
var
testFunc: TFuncType;
begin
testFunc:=MyTestFunc ;
CallbackFunc(testFunc);
end;end.