Y
yangmingnian
Unregistered / Unconfirmed
GUEST, unregistred user!
在重载了析构函数的非主窗口frmTestInfo(不是Auto-Create)中放置一退出按钮,用来退出应用程序,源代码如下:
procedure TfrmTestInfo.btnQuitClick(Sender: TObject);
begin
frmTestInfo.Free
// 去掉这一句后析构函数将不再发生
Application.Terminate;
end;
destructor TfrmTestInfo.Destroy;
begin
ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE)
// 隐藏任务栏
// showmessage('haha')
// 当 frmTestInfo.Free
存在时,去掉这一句将发生错误
inherited;
end;
为什么一点击这个按钮就发生如下错误:
"Access violation at address 00403698 in module 'test.exe'. Read of address 00CC8000"
当我去掉 frmTestInfo.Free
这一句后,错误不再出现,但是窗口重载的析构函数又不会发生(及任务栏不会隐藏),这可不是我希望的结果。
而当析构函数中调用了showmessage函数时,问题又不再出现。
请问这是怎么回事,我要如何解决这个问题。
对不起,本人分数很少,只能给这么点分了,望个位高手指点一二。
procedure TfrmTestInfo.btnQuitClick(Sender: TObject);
begin
frmTestInfo.Free
// 去掉这一句后析构函数将不再发生
Application.Terminate;
end;
destructor TfrmTestInfo.Destroy;
begin
ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE)
// 隐藏任务栏
// showmessage('haha')
// 当 frmTestInfo.Free
存在时,去掉这一句将发生错误
inherited;
end;
为什么一点击这个按钮就发生如下错误:
"Access violation at address 00403698 in module 'test.exe'. Read of address 00CC8000"
当我去掉 frmTestInfo.Free
这一句后,错误不再出现,但是窗口重载的析构函数又不会发生(及任务栏不会隐藏),这可不是我希望的结果。
而当析构函数中调用了showmessage函数时,问题又不再出现。
请问这是怎么回事,我要如何解决这个问题。
对不起,本人分数很少,只能给这么点分了,望个位高手指点一二。