我的程序是一个基于对话框的程序,在主对话框中按一个按钮后生成一个非模态对话框,现在我想在新的对话框里按一个按钮的时候窗口消失,同时要改变主对话框的内容,应该怎么办?
试过用自定义消息,但是在新对话框发送消息的时候需要得到主对话框的指针,不知道如何得到。
这两个对话框有父子关系吗?
用模式对话框是又应该怎么实现这个功能呢?
谢谢!

解决方案 »

  1.   

    用AfxGetMainWnd()得到主对话框指针,试试
      

  2.   

    假设你的程序是这样的结构,主对话框为CMainDlg,动态生成的非模式对话框为CDyniDlg.
    现在在你的按钮点击函数里void CMainDlg::OnButton()里写道,   CDyniDlg* pDyniDlg = new CDyniDlg(this);然后调用pDyniDlg->Create()去建立和显示这个非模式对话框的话,那这两个对话框就是父子关系,你可以在CDyniDlg中用GetParent()函数来得到父类的HWND,即窗口句柄。此时你就可以在任何时候用SendMessage或是PostMessage,给父类的HWND发送任何消息了。模式对话框也同此理。
      

  3.   

    AfxGetMainWnd()
    GetParent()
    GetOwner()
    都能得到主对话框的指针,通过指针直接操作想要的内容是比较简单的
    也可以发送自定义消息,在消息响应函数中,作刷新界面等操作
      

  4.   

    有几种方法,
    一,发自定义消息给他,在要更改的对话框中处理DefWindowPoc 消息
    二,为非模式对话框增加成员函数(Public中),然后在主对话框中调用,如m_pMyDlg->mybl....
      

  5.   

    AfxGetMainWnd()->PostMessage(WM_CLOSE, 0, 0);