如何调用一个dll,该dll是一个mdi?(100分)

  • 主题发起人 主题发起人 reticent
  • 开始时间 开始时间
R

reticent

Unregistered / Unconfirmed
GUEST, unregistred user!
运行正常的一个mdi的应用程序(.exe),当编译成一个dll被其他应用程序调用后报错:'当前无激活的FORM'
 
有mdi的application不能直接转换成dll,要作一些改动
wait...
 
在动态连接库中的MDI子窗体:

library MDIDll;
var
SaveDLLApp:TApplication;

procedure ShowMDIChildForm(MainApp:TApplication);
var
Child:TMDIForm;
begin
if not Assigned(SaveDllApp) then
begin
SaveDllApp:=Application;
Application:=MainApp;
end;
Child:=TMDIForm.Create(Application.MainForm);
Child.Show;
end;

procedure MyLibraryProc(Reason:integer);
begin
if Reason=DLL_PROCESS_DETACH then
if Assinged(SaveDllApp) then
Application:=SaveDllApp;
end;

export ShowMDIChildForm;

begin
DllProc:=@MyLibraryProc;
end.

在调用dll的应用中,用下述方法生MDI窗体;
procedure Form1.Button1Click(Sender:Tobject);
begin
ShowMDIChildForm(Application);
end;

把你的代码贴出来看看。
 
TMDIForm是在那个单元中啊?
 
Victortim的很正确,如果用C++ Builder可以到西祠的C++ Builder我有文章很详细.
 
Victortim的很正确,但还有其他实现方法,具体可以到http://vcl.vclxx.com/DELPHI/D32SAMPL/MDIDLL.ZIP,有原吗
 
接受答案了.
 
后退
顶部