none
OnNewWindow2如何关闭所有子窗口 RRS feed

  • 问题

  • 单文档程序
    chtmlview继承来的,用OnNewWindow2 方法打开子窗口
    请问一下,我如何关闭所有的子窗口啊?
    (就是说,第一个运行的窗口不关闭,用OnNewWindow2方法打开的窗口都关闭)
    感谢感谢~~

    自己试了一些多文档程序关闭方法,移植不成功:(

    下面一些代码可参考
    1.
    CMDIChildWnd* pMDIActive = MDIGetActive();
    ASSERT(pMDIActive != NULL);
    CDocument* pDoc = pMDIActive->GetActiveDocument();
    ASSERT(pDoc != NULL);
    CView* pView;
    POSITION pos = pDoc->GetFirstViewPosition();
    while (pos != NULL)
    {
    pView = pDoc->GetNextView(pos);
    if (pView->IsKindOf(RUNTIME_CLASS(CNewView)))
    {
    pView->GetParentFrame()->SendMessage(WM_CLOSE);
    }
    }
    2.
    CMDIFrameWnd *pMainFrm =(CMDIFrameWnd *)AfxGetMainWnd();
    CMDIChildWnd *pChild =pMainFrm->MDIGetActive();
    while(pChild)
    {
    pChild->MDIDestroy();
    pMainFrm->MDINext();
    pChild =pMainFrm->MDIGetActive();
    }
    • 已编辑 flyskytoday 2009年7月15日 9:55 系统给我排版太差太差
    2009年7月15日 9:47

答案

  • 枚举当前文档模板的所有文档,用CDocument::UpdateAllViews通知各个视图关闭自己

    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over nothingness/null to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月15日 13:49
    版主

全部回复

  • 自己调试了半天,还是未想出什么好的方法
    现在我是按这样做的,在视图中加一个接收消息,用另外一个程序给发消息,进程间的通信
    在浏览器接收到消息后,就关闭自身。
    现在问题是:
    1,查找不到窗口(自定义的浏览器,窗口标题名都叫"中国建设银行")
    刚才用FindWindow(NULL,"中国建设银行")找不到子窗口
    还有什么好地方法呢???
    再弱弱地问一下,如何循环查找窗口?FindWindowEx??
    2009年7月15日 12:31
  • 枚举当前文档模板的所有文档,用CDocument::UpdateAllViews通知各个视图关闭自己

    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over nothingness/null to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月15日 13:49
    版主
  • 非常感谢老大,太谢谢了
    2009年7月16日 5:35