Dll中封装非模态窗体的问题?

wulengbing 2006-09-25 10:13:22
var
DllApp:TApplication;
//创建主窗口
function CreateMainForm:Integer;stdcall;
begin
try
frmMain := TfrmMain.Create(DllApp);
frmMain.Show;
Result := 0;
except
Result := -1;
frmMain.Free;
end;
end;
//这里一执行完就报内存错误,但是窗口照样显示。
//函数输出列表
exports
CreateMainForm;

begin
DllApp := Application;
end.
...全文
212 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
光明山人 2006-09-28
  • 打赏
  • 举报
回复
首先,确保EXE方面的CreateMainForm函数的定义有stdcall修饰:
function CreateMainForm: Integer; stdcall; external 'testdll.dll';

大概是因为 DLL 中的 Application 未正确初始化造成。

三个方法(三者选一或三者全有):
1、将EXE和DLL都做成需要Runtime Package的,Project Options | Packages | Build with Runtime Packages,确保VCL的核心包都在了;
2、在调用CreateMainForm之前想办法把
3、你把DllApp做成CreateMainForm的参数吧,从EXE中传入,做为该FORM的Owner。

另外,错误信息是什么?好多人不写错误信息,纳闷……


--
http://www.agui.googlepages.com
mailto: agui.cn @ gmail.com
newfang 2006-09-28
  • 打赏
  • 举报
回复
问题的关键不在这里,而在DLL的DLLPROC!
要重写DLLPROC指向的过程……
网上有很多这样的例子,自己找找吧!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧