请教:这种情况下如何退出程序?

jyg 2000-12-25 11:18:00
在Test1.exe中有一个Form1,Button1在Form1上,按下执行
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TOpenDialog * newOne=new TOpenDialog(this);
newOne->Execute();
delete newOne;
}

在Test2.exe的form退出时要将Test1关闭。在FormClose里加上
hwnd = ::FindWindow("TForm1", "Form1");
if (hwnd) PostMessage(hwnd, WM_CLOSE, 0, 0);

现在的问题是,Test1中的Button按下弹出OpenDialog时,Test2退出只能关闭OpenDialog,Test1.exe仍然存在。如果使用
hwnd = ::FindWindow("TApplication", "Test1");
同样不能关闭。

打开系统的Dialog都类似。该如何处理这种情况?

...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyg 2000-12-26
  • 打赏
  • 举报
回复
用WM_QUIT是不行的。

do...while的方法可以用,可是Test1.exe有稍微复杂的关闭过程时会出错,象access invalid address等,加Sleep能减少出错机率,但这不是解决问题的方法。

还有没有别的招?
Wingsun 2000-12-25
  • 打赏
  • 举报
回复
你可以这样
do
{
hwnd = FindWindow("TForm1", "Form1");
if (hwnd) PostMessage(hwnd, WM_CLOSE, 0, 0);

}while(hwnd!=NULL)
whoo 2000-12-25
  • 打赏
  • 举报
回复
使用wm_quit

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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