我想做一个基于对话框的应用程序,有如下几个问题想请教:
1、如何实现一个非模式对话框在产生另一个非模式对话框后自己隐藏,在产生的非模式对话框关闭后又重新显示?
2、非模式对话框用DestroyWindow()关闭后是不是一定要在PostNcDestroy消息处理中delete this ?
3、如何把一个非模式对话框中的数据传递到另一个非模式对话框中?

解决方案 »

  1.   

    1.ShowWindow(SW_HIDE)隐藏
    2。不用
    3。获取另一个非模式对话框的实例
      

  2.   

    1。ShowWindow(SW_HIDE);
       在第二个非模态对话框的OnOK或者OnCancel中重新显示第一个:ShowWindow(SW_SHOW); 2。不用了,DestroyWindow()帮你做完了3。可以用全局变量
       或者在第二个非模态对话框中得到第一个非模态对话框的实例指针,把数据传过来
      

  3.   

    用ShowWindow()我也知道,只是不知道如何获取第一个对话框的指针。
      

  4.   

    你第一个对话框创建时怎么创建的直接再第二个对话框中引用CDialog1* m_pdlg1;就行了
      

  5.   

    主对话框:
    CDialog2noModeDlg成员
    CDlg1 dlg;
    void CDialog2noModeDlg::OnButton1() 
    {
    //dlg 成员变量,CDlg1类
    dlg.Create(IDD_DIALOG1);
    dlg.ShowWindow(SW_SHOW);
    }class CDlg1成员
     int x ;
    CDlg2 dlg;
    void CDlg1::OnButton1() 
    {
    x = 1 ;
    dlg.Create(IDD_DIALOG2,this);
    dlg.ShowWindow(SW_SHOW);
    ShowWindow(SW_SHOW);
    }
    class CDlg2 成员
    void CDlg2::OnOK() 
    {
    //访问数据
    CDlg1 * pDlg = (CDlg1 *)GetParent();
    int x = pDlg->x ;
    pDlg->x ++;  SendMessage(WM_CLOSE);
    GetParent()->ShowWindow(SW_SHOW);
    }不用delete this
      

  6.   

    我在C*App.CPP文件中把原来生成模式对话框的语句修改成生成非模式对话框的语句,在生成的第一个非模式对话框中的静态文本标签中加入点击事件,在相应的成员函数中生成第二个非模式对话框,然后调用ShowWindow(SW_HIDE)隐藏自己,现在的问题是在第二个非模式对话框的ONOK或ONCancel或关闭时如何用ShowWindow(SW_SHOW)使第一个对话框显示出来。
      

  7.   

    he_zhidan(何志丹:风云伐日):
    你用GetParent()得到父窗口是一个办法,不过在生成这一对话框时一定要用dlg.Create(IDD_DIALOG2,this)不能用dlg.Create(IDD_DIALOG2,NULL)吧。
    不过还是不明白为什么要用SendMessage(WM_CLOSE),而不是用DestroyWindow()?
    为什么用GetParent()->ShowWindow(SW_SHOW),而不用pDlg->ShowWindow(SW_SHOW)?请指教。