有一对话框CSetGoodsNameDlg是TabCtrl 中的一个,所以是child窗口,我想在另一个对话框中调用CSetGoodsNameDlg中的函数如果不是child的话我这样用是可以的,
((CSetGoodsNameDlg*)GetParent())->ReadProductNameItems();
((CSetGoodsNameDlg*)GetParent())->ShowSelLine();但是现在是child所以不行了,应该怎么用呢?请高人指点

解决方案 »

  1.   

    1、如果在另一个对话框中
    声明CSetGoodsNameDlg dlg;
    dlg.Create(IDD_CSetGoodsNameDlg,NULL);则dlg就是这个对话框,可以用对话框里所有的东西。2、如果你要调用的另一个对话框刚好是Parent,
    可以在Parent自定义一个消息,(下面代码发送的是WM_SYSCOMMAND,改为你要发送的消息):
    CWnd* hwnd;
    hwnd = GetParent();
    if(hwnd == NULL)
          return ;::SendMessage(hwnd->m_hWnd,WM_SYSCOMMAND,0XF012,(LPARAM)0);
      

  2.   

    楼主方法貌似不行啊。最好互相保存窗体指针,这个最安全。GetParent()要仔细实验的,不然都不知道谁是谁的父窗体呢
      

  3.   

    有人帮忙吗,我只是想在操作一个对话框时,另一个对话框(child)会有相应的变化