目的:在主程序发生注销操作时,将没有关闭的对话框窗口全部关闭。谢谢您的答复。

解决方案 »

  1.   

    CWnd* wnd = GetWindow( GW_HWNDNEXT );
    while (wnd)
    {
        SendNotifyMessage( wnd->m_hWnd, WM_SYSCOMMAND, SC_CLOSE, 0 );
        wnd = GetWindow( GW_HWNDNEXT );
    }
    会出现死循环,为什么一直都可以找到句柄呢?
    还有,如何关闭已经打开的模态窗口?
    //我打开了两个非模态窗口,一个模态窗口,结果关闭了两个非模态窗口,另外一个模态窗口还是没有关闭。请帮忙解决一下。谢谢。
      

  2.   

    use EnumChildWindows to enumerate child windows in your application , gain the child window's handle , and close it .
    BOOL EnumChildWindows(          
        HWND hWndParent,
        WNDENUMPROC lpEnumFunc,
        LPARAM lParam
    );//CALLBACK function 
    BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) 
    {    
        ::PostMessage(hwndChild,WM_CLOSE,0,0);
        return TRUE;
    }
      

  3.   

    EnumChildWindow是枚举窗口中的控件子窗口吧,而不是生成的对话框。
    再寻求帮助,谢谢。