delphi中一个值得大家来考虑的DLL问题
<br>以下是我的原代码:<br>==========================================================================================<br>DPR 单元代码<br>program Mdiform;<br>uses<br> Forms,<br> UMdiform in ´UMdiform.pas´ {Mainform},<br> UDM in ´UDM.pas´ {GlobalDM: TDataModule},<br> UFun in ´UFun.pas´;<br>{$R *.res}<br>begin<br> Application.Initialize;<br> Application.CreateForm(TMainform, Mainform);<br> Application.Run;<br>end.<br>===============================================================================================<br>主窗体代码:<br>unit UMdiform;<br>interface<br>uses<br> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> Dialogs, Udm,StdCtrls;<br>type<br><br> TMainform = class(TForm)<br> Button1: TButton;<br> procedure Button1Click(Sender: TObject);<br> procedure FormCreate(Sender: TObject);<br> private<br> { Private declarations }<br> public<br> MyHandle:HWND;<br> { Public declarations }<br> end;<br>var<br> Mainform: TMainform;<br>type<br> T_ShowTestMng=function (var adm:TMainform) : Boolean; StdCall;<br>implementation<br>{$R *.dfm}<br>procedure TMainform.Button1Click(Sender: TObject);<br>var <br> Lib_ :THandle;<br> _ShowTestMng :T_ShowTestMng;<br>begin<br> Lib_:=LoadLibrary(pchar(´MdiChild.dll´));<br> try<br> @_ShowTestMng:=GetProcAddress(Lib_,´_ShowTestMng´);<br> if not(@_ShowTestMng=nil) then<br> _ShowTestMng(Mainform);<br> finally<br> FreeLibrary(Lib_);<br> end;<br>end;<br>procedure TMainform.FormCreate(Sender: TObject);<br>begin<br> MyHandle:=Application.Handle;<br>end;<br>end.<br>==============================================================================================<br>子窗体DLL代码:<br>library MdiChild;<br>uses<br> ShareMem,<br> UMdiform, //此单元为父窗体单元,在顶目设置中我已经设置了搜索此单元在路径。<br> Forms,<br> SysUtils,<br> Classes,<br> UChild in ´UChild.pas´ {FrmChild};//FrmChild子窗体的FormStyle属性为FsMDIChild<br>{$R *.res}<br>function _ShowTestMng(var adm:TMainform) : Boolean; StdCall;<br>begin<br> result:=true;<br> Application.Handle:=adm.MyHandle;<br> Application.CreateForm(TFrmChild,FrmChild); //程序就出错在此:出错原因是:Cannot create form. No MDI Forms are currently active.<br> FrmChild.Show;<br>end;<br>exports<br> _ShowTestMng;<br>end.<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>C# 调用Delphi dll 实例代码</li><li>Delphi 用DLL实现插件的简单实例</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]