读书人

关于调用 dll 的回调函数打包到控件的

发布时间: 2013-06-26 14:29:32 作者: rapoo

关于调用 dll 的回调函数封装到控件的事件?
本帖最后由 wealsh 于 2013-03-18 21:13:02 编辑 Dll 与 主程序正常调用的回调函数是这样的

主程序:
type
TMyCB = procedure(Cmd:TCmd;pData: Pointer;BmpData:Pointer;BmpDataSize:Integer);

procedure ReadCB(Cmd:TCmd;pData: Pointer;BmpData:Pointer;BmpDataSize:Integer);
begin
dll 返回
end;

SetMyCB(ReadCB) //把这个过程传给dll

以上都正常调用

现在我想写个控件
把 ReadCB 封装成事件,如何处理?

TBackMessageEvent = procedure(Cmd:TCmd;pData: Pointer;BmpData:Pointer;BmpDataSize:Integer) of object;


TWealsh = class(TWealshPNLS)
private
FBackMessage: TBackMessageEvent;
published
property OnBackMessage:TBackMessageEvent read FBackMessage write FBackMessage;
end;


SetMyCB(ReadCB) //这个过程应该不能写在TWealsh里?
[解决办法]

引用:
本帖最后由 wealsh 于 2013-03-18 21:13:02 编辑
Dll 与 主程序正常调用的回调函数是这样的

主程序:
type
TMyCB = procedure(Cmd:TCmd;pData: Pointer;BmpData:Pointer;BmpDataSize:Integer);

procedure……


你定义的类已经有属性了, 就不用再单独写SetMyCB(ReadCB)
下边的代码已测试通过

unit Unit13;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TCmd = class

end;
TBackMessageEvent = procedure(Cmd:TCmd;pData: Pointer;BmpData:Pointer;BmpDataSize:Integer) of object;

TWealsh = class
private
FBackMessage: TBackMessageEvent;
published
property OnBackMessage:TBackMessageEvent read FBackMessage write FBackMessage;
end;

TForm13 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure BackMessage(Cmd:TCmd;pData: Pointer;BmpData:Pointer;BmpDataSize:Integer);
public
{ Public declarations }
end;

var
Form13: TForm13;

implementation

{$R *.dfm}

procedure TForm13.BackMessage(Cmd: TCmd; pData, BmpData: Pointer; BmpDataSize: Integer);
begin

end;

procedure TForm13.FormCreate(Sender: TObject);
var
a : TWealsh;
begin
a.OnBackMessage := BackMessage;
end;

end.

读书人网 >.NET

热点推荐