我有一个dialog,我在这个dialog里面用一个button来执行OnOK,但这个dialog的却没有接受到destory消息,为什么?如何才能截获destory消息,因为我要在这dialog结束时执行一些操作。注:这个dialog是由其他dialog用create来创建的非模式对话框。

解决方案 »

  1.   

    不要调用EndDialog来结束非模式对话框,CDialog::OnOK会调用EndDialog。
      

  2.   

    在OnOK的处理里面调用DestroyWindow来关闭对话框
      

  3.   

    BOOL DestroyWindow( 
    HWND hWnd 
    );
      

  4.   

    重载OnOk,然后在里面调用DestroyWindow,最后CDialog::OnOk();
      

  5.   

    重载OnDestroy虚函数,在OnDestroy里面释放要是放的资源,然后delete this,释放自己。
    好像是这样的。
      

  6.   

    PostMessage to distination dialog
      

  7.   

    关闭对话框:
    其实,一般窗口的销毁可以用DestoryWindow(),对话框的销毁可以用EndDialiog().
    EndDialog(IDOK);
    DoModal()的返回值为IDOK,但不会执行用户定义的OnOK.
    只要发送WM_CLOSE消息,就会有响应的函数处理的。
    SendMessage(WM_CLOSE);
    PostMessage(WM_CLOSE);void CTestDialog::OnButton1() 
    {
    GetParent()->DestroyWindow();
    }
    窗口和对话框一起关
    PostMessage(WM_QUIT);
    SendMessage(WM_QUIT);//不行
    无模式对话框用DestroyWindow();
    用EndDialog
    你再打开原对话框就有问题