我的意思是在你的对话框中,接收到OnOK或OnCancel消息后,向主窗口发送消息

解决方案 »

  1.   

    直接在OnOK或OnCancel内
    实现你的功能就可以了,它
    可以访问父窗口
      

  2.   

    无模式,Sorry,请用sxbyl的方法:在对话框中向父窗口发送一个自定义消息,这可能是较好的解决方案!
      

  3.   

    呵呵,小弟在此就把实现的代码和方法写写吧:)
    首先为了实现这种消息发送你必须自己定义Windows消息,那我们就先定义如下两个消息
    const WM_OKPRESSED = WM_USER+100;
    const WM_CANCELPRESSED = WM_USER + 101;
    然后在对话框的OnOK和OnCancel中填写如下代码
    void TestDialog::OnOK()
    {  
       UpdateData(TRUE);//将更新变量数据
       SendMessage(hWnd,WM_OKPRESSED,0,0); 
       //hWnd 主窗口句柄,也就是要处理并接受上面定义的那两个消息的窗口句柄句柄}
    void TestDialog::OnCancel()
    {  
       SendMessage(hWnd,WM_CANCELPRESSED,0,0); 
       //hWnd 主窗口句柄,也就是要处理并接受上面定义的那两个消息的窗口句柄句柄
    }
    //窗口的处理函数
    HRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {
         switch(msg)
           {
              ....
              ....
              case WM_OKPRESSED:
                 ......    //若收到此消息说明用户按下了OK按钮,在这里就可以添加
                 ......    //相应的处理代码了
              break;
              case WM_CANCELPRESSED:
                .......   //若收到此消息说明用户按下了Cancel按钮,
                 ......
              break;
             ......
    }
    如果你用的是MFC则可以用MFC提供的消息映射来响应这两个自定义消息,方法如下
    ON_MESSAGE(WM_OKPRESSED,OnDialogOk)
    ON_MESSAGE(WM_CANCELPRESSED,OnDialogCancel)
    OnDialogOk和OnDialogCancel为处理这两个自定义消息的函数名称
    希望对你有些帮助:)
      

  4.   

    用消息比较合理
    不过你的无模式对话框,用ONOK()是调用的ENDDIALOG()函数,而无模式对话框应该用
    DESTROYWINDOW()函数才能完全释放