急,关于回调问题,见内容,谢谢

来源:互联网  时间:2016/8/24 10:51:29

关于网友提出的“ 急,关于回调问题,见内容,谢谢”问题疑问,本网通过在网上对“ 急,关于回调问题,见内容,谢谢”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 急,关于回调问题,见内容,谢谢
描述:

我想做个DLL里面有个TTimer空间 有OnTimer 事件
程序调用DLL并且响应DLLOnTimer 事件
有哪位大哥给个例子,谢谢


解决方案1:


unit UntMain;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
type
  TDLLInvokFun = function : TTimer;
  TForm1 = class(TForm)
    lbl1: TLabel;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    FTestTime : TTimer;
    FDLLHandle : THandle;
    procedure TestTimerEvents(Sender: TObject);
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.TestTimerEvents(Sender: TObject);
begin
  lbl1.Caption := DateTimeToStr(Now);
end;
procedure TForm1.btn1Click(Sender: TObject);
var
  tmpFileName : string;
  tmpFun : TDLLInvokFun;
begin
  if FDLLHandle = 0 then begin
    tmpFileName := ExtractFilePath(Application.ExeName) + 'TestDll.dll';
    FDLLHandle  := LoadLibrary(PChar(tmpFileName));
  end;
  tmpFun := GetProcAddress(FDLLHandle,'GetTimer');
  FTestTime := tmpFun();
  FTestTime.OnTimer := TestTimerEvents;
  FTestTime.Enabled := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  FDLLHandle := 0;
end;
end.
*****************************************************************
unit UntTestData;
interface
uses
  SysUtils, Classes, ExtCtrls;
type
  TdmTestData = class(TDataModule)
    Timer1: TTimer;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  dmTestData: TdmTestData;
function GetTimer : TTimer;
implementation
function GetTimer : TTimer;
begin
  if not Assigned(dmTestData) then begin
    dmTestData := TdmTestData.Create(nil);
  end;
  Result := dmTestData.Timer1;
end;
{$R *.dfm}
end.

上一篇关于回调 学习
下一篇谁有海康车载SDK的Demo?
明星图片
相关文章
《 急,关于回调问题,见内容,谢谢》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)