就是DLL如何和主程序进行数据通信。
主程序调用DLL,DLL为带窗体的,我想在DLL中调用主程序所提供的一个函数,不知道如何实现

解决方案 »

  1.   

    跟调用DLL一样的调用就行了,
    GetModuleHandle找到主程序地址,然后GetProcAddress找到函数入口,然后调用,
      

  2.   

    2楼的方法果然有创意!to:楼主
    一般的做法是把主程序里面的函数指针传给DLL,然后DLL里面就可以调用了哦!例子:library MyDLL;uses
      SysUtils,
      Classes;{$R *.res}var
      Func: procedure (count: integer); //定义一个函数指针procedure SetCallbackProc(pFunc: Pointer);
    begin
      Func:=pFunc; //给函数指针赋值
      Func(100); //调用函数
    end;exports
      SetCallbackProc;beginend.///////////////////////////////////////////////////////////////////program MyAPP;{$APPTYPE CONSOLE}uses
      SysUtils;procedure SetCallbackProc(pFunc: Pointer); external 'MyDLL.dll';procedure Func(count: integer); //定义回调函数(在DLL里面调用)
    begin
      WriteLn(count);
    end;begin
      { TODO -oUser -cConsole Main : Insert code here }
      SetCallbackProc(@Func); //将函数指针传入DLL
      ReadLn;
    end.