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

关于调用 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.