以下是我的原代码:
================================================= =======================================
DPR单元代码
programaMdiform;
usa
Formulários,
UMdiformin´UMdiform.pas´{Mainform},
UDMin´UDM.pas´{GlobalDM:TDataModule},
UFunin´UFun.pas´;
{$R*.res}
começar
Aplicativo.Inicializar;
Application.CreateForm(TMainform,Mainform);
Aplicativo.Executar;
fim.
================================================= ============================================
主窗体代码:
unidadeUMdiforme;
interface
usa
Windows, Mensagens, SysUtils, Variantes, Classes, Gráficos, Controles, Formulários,
Diálogos,Udm,StdCtrls;
tipo
TMainform=class(TForm)
Botão1:Botão;
procedimentoButton1Click(Remetente:TObject);
procedimentoFormCreate(Sender:TObject);
privado
{Declarações privadas}
público
MeuHandle:HWND;
{declarações públicas}
fim;
var
Formulário principal:TMainform;
tipo
T_ShowTestMng=função(varadm:TMainform):Boolean;StdCall;
implementação
{$R*.dfm}
procedimentoTMainform.Button1Click(Sender:TObject);
var
Lib_:THhandle;
_ShowTestMng:T_ShowTestMng;
começar
Lib_:=LoadLibrary(pchar(´MdiChild.dll´));
tentar
@_ShowTestMng:=GetProcAddress(Lib_,´_ShowTestMng´);
ifnot(@_ShowTestMng=nil)então
_ShowTestMng(Mainform);
finalmente
Biblioteca Livre(Lib_);
fim;
fim;
procedimentoTMainform.FormCreate(Sender:TObject);
começar
MeuHandle:=Application.Handle;
fim;
fim.
================================================= ============================================
子窗体DLL代码:
bibliotecaMdiChild;
usa
CompartilheMem,
UMdiform, //此单元为父窗体单元,在顶目设置中我已经设置了搜索此单元在路径。
Formulários,
SysUtils,
Aulas,
UChildin´UChild.pas´{FrmChild};//FrmChild子窗体的FormStyle属性为FsMDIChild
{$R*.res}
function_ShowTestMng(varadm:TMainform):Boolean;StdCall;
começar
resultado:=verdadeiro;
Application.Handle:=adm.MyHandle;
Application.CreateForm(TFrmChild,FrmChild);//程序就出错在此:出错原因是:Cannotcreateform.NoMDIFormsarecurrentlyactive.
FrmChild.Mostrar;
fim;
exportações
_ShowTestMng;
fim.