可以在FormCreate()中 使用PostMessage(Handle,WM_CLOSE,0,0) 来关闭画面吗?

cgxf 2007-07-10 04:32:06
在FormCreate()中做了检查,满足一定条件就要直接退出.
1.为什么用PostMessage(Application.MainForm.Handle,WM_CLOSE,0,0);就出现错误.用PostMessage(Form1.Handle,WM_CLOSE,0,0);就可以正常退出.
2.别的程序通过process调用时候
在单步调试的时候出现地址不匹配的错误,但是直接运行程序的时候并没有出现什么错误?
3.在FormCreate()中调用CLOSE()方法是不可以的,这大家都知道.那么调用PostMessage来关闭画面可以吗? 有没有可能发生不可预知的后果呢.
由于在做一个可靠性很高的系统, 希望能帮助小弟.
...全文
338 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgxf 2007-07-11
  • 打赏
  • 举报
回复
现在使用的是process, 使用Halt的时候会报奇怪的错误
cgxf 2007-07-11
  • 打赏
  • 举报
回复
halt时候的错误提示是 'runtime error 216 at 0040372E'
为什么delphi4的时候使用halt是可以的, 升级到delphi7的时候会出错呢?
cgxf 2007-07-10
  • 打赏
  • 举报
回复
TO hongqi162(失踪的月亮)
但是在FormCreate中已经使用 Application.Terminate();等代码,按照你的做法要做大量的修改,
怎样在这边结束process呢?如下代码怎样呢? (不使用Application.MainForm而使用Form1)
Form1.FormCreate()
{
Application.Terminate();
PostMessage(Form1.Handle,WM_CLOSE,0,0);
}

现在我这边情况是:实际处理的是RealForm ,TForm1是基类.
RealForm =class(TForm1)
hongqi162 2007-07-10
  • 打赏
  • 举报
回复
还没有执行到application.run那来的mainform的handle,


program Project2;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
//做判断是否执行Application.Run
Application.Run;
end.
阿发伯 2007-07-10
  • 打赏
  • 举报
回复
procedure TForm1.FormCreate(Sender: TObject);
begin
if .... then
Halt;
end;
阿发伯 2007-07-10
  • 打赏
  • 举报
回复
Halt;

1,183

社区成员

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

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