急!急!急!关于dll中调用form的问题

tomfshao 2003-06-06 03:34:08
我有一个程序。主窗体为了漂亮和使用没有用mdiform所有的功能窗体都封装在dll中有一个标准的接口run。在调用的时候由主窗体传递dll中form所需要的参数。并且每个功能窗体打开后动态的创建一个窗口采单,但是如何才能在关闭窗体时同时也将对应的动态采单删除,自定义消息不能解决窗体名称参数问题。
附代码:《如有问题和错误请指出》
dll中的代码:
procedure Run(AppHandle:THandle;CS_PAR:Tcommservice);stdcall
var Form:TFrmTest;
pp:Pointer;
begin
Application.Handle:=AppHandle;
Form:=TFrmtest.Create(Application);
Form.cs:=cs_par;
Form.Show;
end;
exports
run;
begin
end.
//
//窗体中的代码
procedure TFrmDeskTop.RunModal(Path: string);
type
TRun=procedure(AppHandle:THandle;CS_PAR:Tcommservice);stdcall;
var
Run:Trun;
PrgH:Thandle;
begin
PrgH:=Loadlibrary(pChar(Path));
if PrgH<>0 then begin
@Run:=GetProcAddress(PrgH,'Run');
if @run<>nil then
begin
run(Application.Handle,DCS);
end;
end
else
FreeLibrary(PrgH);
end;
...全文
128 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomfshao 2003-06-09
  • 打赏
  • 举报
回复
还有我show的是无模窗体。这样就不能将dll立即释放,怎样能在内部释放呢?
PhilexPei 2003-06-09
  • 打赏
  • 举报
回复
procedure TfrmHello.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
kuchong 2003-06-07
  • 打赏
  • 举报
回复
让Dll函数传回已生成窗口的句柄,这样加以保存
删除不就很容易
tomfshao 2003-06-06
  • 打赏
  • 举报
回复
那就将你的方法给出来,最好将主要的代码也上来,这样大家就可以共享了。要分的话我肯定不会吝惜的。
Linux2001 2003-06-06
  • 打赏
  • 举报
回复
呵呵,我现在就已经搞定这个问题了,很容易

1,184

社区成员

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

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