我在一个主程序里调用DLL里面的窗体,当DLL里面的窗体关闭时,要同时关闭主程序里的一个相应的窗体!不知道为什么,当在主程序里运行上面的程序三次以后就会出错?而且是不知名的错误,不知道为什么?当DLL里面的窗体关闭时,同时关闭主程序里的一个相应的窗体,我用的是SENDMESSAG命令,而后改过POSTMESSAGE也会出错?我花了很多时间查问题,很可能出在内存问题上!好象还有资源没释放引起的!比较奇怪的就是第一,二次关闭是正常,可第三次关闭的时候就会出错!面有时候进去时也会出错,提示的大概意思好象是:无效的指针什么的!我急死了!请各位大侠献记献策!程序一部分代码如下:
procedure TFmMainSAD.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
try
CloseWindow(p_ParentForm.Handle);
PostMessage(p_ParentForm.Handle,WM_CLOSE,0,0);
Self :=nil;
Action :=caFree;
except
end;
end;
procedure TFmMainSAD.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
try
CloseWindow(p_ParentForm.Handle);
PostMessage(p_ParentForm.Handle,WM_CLOSE,0,0);
Self :=nil;
Action :=caFree;
except
end;
end;
begin
inherited;
try
Action :=caFree;
// CloseWindow(p_ParentForm.Handle);
PostMessage(p_ParentForm.Handle,WM_CLOSE,0,0);
Self :=nil;
except
end;
end;
begin
inherited;
try
CloseWindow(p_ParentForm.Handle);
PostMessage(p_ParentForm.Handle,WM_CLOSE,0,0);
Action :=caFree;
Self :=nil;
except
end;
end;先释放,然后再置成空
??是何概念?
在inherited并没有什么处理,只有两句:
Action := caFree;
FmMainTemplate := nil;
应该不可能存在问题!现在奇怪的是程序前两次都没问题!可第三次从主程序进入DLL调用DLL里的函数创建窗体时就会出错!