想问Delphi写的DLL中的窗体,在VC6中调用能显示,但关闭时出错是怎么回事。 ( 积分: 50 )

  • 主题发起人 主题发起人 xuegaoyili
  • 开始时间 开始时间
X

xuegaoyili

Unregistered / Unconfirmed
GUEST, unregistred user!
本人做一个窗体用DLL给封装了。在里面的可被调用函数是
rocedure ShowDllForm(wnd:THandle;title:pchar);stdcall;
var
dfm:TForm1;
begin
try
application.Handle:=wnd;
dfm:=TForm1.Create(application);
dfm.Caption:=title;
dfm.ShowModal;
finally
dfm.Free;
end;

end;
(其中的TForm1是另一单元中的窗体类)

在VC6中我是这样调用的。
HINSTANCE hinstLib;
MYPROC ProcAdd;

hinstLib = LoadLibrary("Project1.dll");
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "ShowDllForm");
ProcAdd(GetSafeHwnd(), "这是指定标题");
// If the function address is valid, call the function.

// Free the DLL module.
FreeLibrary(hinstLib);
}

这此地方编译和执行都没问题的。问题在于,我在窗体上放了一个按钮,里面写了
close;这么一句关闭窗体的程序。一点就出错。
 
呵呵,楼主,提示是什么错误啊!
 
提示很长,The value of ESP was not properly saved across a function call.
不知道ESP是什么错
 
一般DLL中的窗体最好是SHOWMODEL,否则关闭时得用DLL中引出的函数
 
已经是showmodel打开方式了。。。。退出时还是有问题。哎。好像是没传回什么值吧
 
多人接受答案了。
 
后退
顶部