向嵌套窗口发送postmessage (h,command,IDOK,0)关闭了子窗口但不能关闭父窗口 也没执行窗口内的操作 wm close 能关闭 但 自己在窗口内输入的数据没输进去 等同于无操作 如何 发送IDOK后确定窗口 执行窗口内的输入 再关闭. 谢谢
说说使用环境:对话框自身用于提供一些状态反馈,在接收到任务处理完成通知后,将自行关闭。
之所以通过PostMessage(WM_CLOSE),而非EndDialog()处理,是因为通知与反馈之间的联系,
过早的结束对话框,会导致程序中断,简单之,就是设计引发这样的需要。
实际在测试时,发现PostMessage(WM_CLOSE)之后,当前对话框不能关闭。
最终查明,原来是最初在设计时为了防止按下Enter键或Esc键而使对话框结束,做了如下处理:
virtual void OnOK() {}
virtual void OnCancel() {}
当PostMessage(WM_CLOSE)发出后,而OnCancel()空空如也,所以对话框依旧。
删除这些原有的处理后,一切就正常了。
附:
PostMessage(WM_CLOSE)发出后,
对话框会处理CDialog::OnCancel()过程,最后再调用OnDestroy()。