2017信息处理技术员:dll,mdi窗体问题

来源:百度文库 编辑:中财网 时间:2024/05/05 06:59:08
这是传Application 到动太库的. 但这是无模式窗体.如何在释放窗体时将DLL释放掉呢?
动太库代码如下(只列出相关接口):
function OpenFrm( Scr: TScreen; hApp:TApplication): Boolean; Stdcall;
begin
  Application:= hApp;
  Screen := Scr;
  Application.CreateForm(Tfrm,Frm);
  Frm.Show;
  Result := True;
end;
procedure DLLEntryPoint(Reason: Integer);
begin
  case Reason of
   DLL_PROCESS_ATTACH :
    begin
      DLLApp := Application;
      DLLScr := Screen;
    end;
  DLL_PROCESS_DETACH :
    begin
      Application := DLLApp;
      Screen := DLLScr;
    end;
  end;
end;
exports
  OpenFrm;
begin
  DLLProc :=@DLLEntryPoint ;
  DllEntryPoint(DLL_PROCESS_ATTACH);
end.
主程序调用如下:
定义接口:type TOpenFrm=function ( Scr: TScreen; hApp:TApplication): Boolean;Stdcall;
调用内容
var
  Openfrm:TOpenFrm;
  MyHandle:THandle;
begin
  MyHandle:=Loadlibrary('Form.dll');
  if MyHandle>0 then
  begin
    @Openfrm:=GetProcAddress(MyHandle,'OpenFrm');
    if @Openfrm<>nil then
      Openfrm(Screen,Application);
  end
  else
    freeLibrary(MyHandle);
end;