我想实现销毁一个对话框A后,立即显示出另一个对话框B
于是我就:if (dlgA.IsWindowVisible())
{
dlgA.PostMessage(WM_CLOSE,0,0); // 在这加了断点1
}
dlgB.ShowWindow(true);void CADlg::OnClose()
{
CDialog::OnClose(); //在这也加了断点2停在断点1后,F10。可为什么不是到断点2处,而是继续往下到dlgB.ShowWindow(true);这个地方?
dlgA.PostMessage(WM_CLOSE,0,0); 这个代码不就是调用CDialog::OnClose(); 的么?
于是我就:if (dlgA.IsWindowVisible())
{
dlgA.PostMessage(WM_CLOSE,0,0); // 在这加了断点1
}
dlgB.ShowWindow(true);void CADlg::OnClose()
{
CDialog::OnClose(); //在这也加了断点2停在断点1后,F10。可为什么不是到断点2处,而是继续往下到dlgB.ShowWindow(true);这个地方?
dlgA.PostMessage(WM_CLOSE,0,0); 这个代码不就是调用CDialog::OnClose(); 的么?
if (dlgA.IsWindowVisible())
{
dlgA.PostQuitMessage(WM_QUIT);
}
dlgB.ShowWindow(true);
试一下
2.OnClose是怎么映射过来的,你没有其它菜单/按钮之类的映射到OnClose上。另外,在对话框中你跟踪OnDestroy更有效,是必然执行的,OnClose多数的时候你按窗口右上角的小叉时,会响应这个函数。
2.OnClose是怎么映射过来的,你没有其它菜单/按钮之类的映射到OnClose上。另外,在对话框中你跟踪OnDestroy更有效,是必然执行的,OnClose多数的时候你按窗口右上角的小叉时,会响应这个函数。