如果关闭有模态对话框的程序?

heweixing_77 2004-05-12 05:34:59
首先主窗口A弹出非模态的的Dialog--B,B的父窗口是NULL,这样就不必总挡在主窗口A的前面,但是点击B里某个控件,弹出一个模态的Dialog--C,比如警告框,C的父窗口是B,所以A还可以继续工作,关闭A,本来是要向B发送CLOSE消息的,但是有C在,关闭不了B,A自己能关闭。

怎么办?
...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnzhu 2004-05-13
  • 打赏
  • 举报
回复
EndDialog(0)
enoloo 2004-05-13
  • 打赏
  • 举报
回复
PostQuitMessage(0);
heweixing_77 2004-05-13
  • 打赏
  • 举报
回复
我在A的OnDestroy()里面,
::SendMessage(B->m_hWnd,WM_CLOSE,0,0);
如果没有C,正常关闭、退出。
因为C窗口在B的上面,是模态对话框,则WM_CLOSE被C截获,B和C都关不了。
点C的“OK”,则B和C一起关闭了,整个程序退出。

应该怎么办?
heweixing_77 2004-05-13
  • 打赏
  • 举报
回复
谢谢enoloo(行者无疆) ( )
  • 打赏
  • 举报
回复
关闭对话框:
其实,一般窗口的销毁可以用DestoryWindow(),对话框的销毁可以用EndDialiog().
EndDialog(IDOK);
DoModal()的返回值为IDOK,但不会执行用户定义的OnOK.
只要发送WM_CLOSE消息,就会有响应的函数处理的。
SendMessage(WM_CLOSE);
PostMessage(WM_CLOSE);

void CTestDialog::OnButton1()
{
GetParent()->DestroyWindow();
}
窗口和对话框一起关
PostMessage(WM_QUIT);
SendMessage(WM_QUIT);//不行
无模式对话框用DestroyWindow();
用EndDialog
你再打开原对话框就有问题
---------------------------
技术上可行
符合你的要求吗?
如果不明白
请给我发短消息
请附: 帖子的地址
或在
http://www.338888.com/VCShare/Default.asp
上提问
joycenter 2004-05-12
  • 打赏
  • 举报
回复
B 里面改用指针指向dialogC。(即C是动态生成的。)
在close B时,先调用C的close函数。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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