msdn上有一个modeless的例子,在主对话框中创建了一个非模态的对话框,我现在想在点主对话框的时候,隐藏(不是Destroy)掉那个非模态对话框,我应该响应什么消息?

解决方案 »

  1.   

    响应WM_CLOSE消息,然后SHOWWINDOW(SW_HIDE);然后返回,不要调用父类的ONCLOSE函数.
      

  2.   

    咦,你的意思是主窗口被点,然后隐藏子窗口?
    那就是WM_ACTIVATE消息
    在主窗口中:
    void C*::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
    {
    CWnd::OnActivate(nState, pWndOther, bMinimized);
    if(nState == WA_ACTIVE )
    {
                 pChildDlg->ShowWindow(SW_HIDE);
    }
    }
      

  3.   

    直接调用非模态对话框的ShowWindow(SW_HIDE)函数就可以了!。
      

  4.   

    就everandforever(Forever)兄明白了我的意思,但是if(nState == WA_ACTIVE )好像不成,在第一次主对话框active的时候,pChildDlg还没有creat,子对话框的active也会发这个消息,导致自己active的时候把自己给隐藏了,根本出不来,我跟踪了一下,要 if(nState == WA_CLICKACTIVE )才成,不过,3x