父窗体和子窗体各有两个编辑框A,B和按钮A,B;点击父窗体A按钮,显示B窗体,把父窗体的A编辑框的数据传在子窗体的A编辑矿中显示,点击子窗体B按钮返回父窗体,在父窗体的B编辑矿中,显示子窗体中B编辑矿的内容,怎么做兄弟们?

解决方案 »

  1.   

    父窗体中定义一全局变量,
    关闭子窗体前extern一下父窗体的变量 ,
    然后把子这窗体中B编辑框的值赋给变量.
      

  2.   

    在创建子窗口的时候构造函数传递父窗口指针this进去或者在子窗口中CFatherDlg *pDlg = (CFatherDlg *)GetParent();
      

  3.   

    总结一下:
    1、在父窗体定义静态变量;
    2、传窗体的指针给子窗体;
    3、子窗体调用GetParent;
    4、向父窗体sendMessage;几类方法中,方法1最差,方法4最优;
    原因:方法1,使用静态变量,如果有多个子对象和父对象存在时,处理比较麻烦;
          方法2, 传指针给子窗体,子窗体需要另外保存这个指针,实际子窗体可以调用GetParent获得;
          方法3, 比方法2优,但与方法2都会与父窗体偶和比较深,假如子窗体与另一父窗体结合,此代码就编译通不过。
          方法4,方法比较优,这样子窗体可以放到任何父窗体上,只要父窗体响应此消息即可。但是要多写几行代码,效率没有前几者高。
      

  4.   

    发送消息SendMessage:
    自定义消息:#define WM_REFRESH WM_USER+200
    点击子窗体按钮时,发送消息SendMessage(pfartherDialog->hWnd,WM_REFRESH,(WPARAM)m_Data, ,(LPARAM)nBufSize);
    pfartherDialog为父窗口指针,m_Data为子窗体编辑框中的数据,nBufSize为需要传送数据的大小。
      

  5.   

    通过消息就ok了,或者,通过setwindowlong,设置userdata