我创建了两个对话窗,如设为A和B,内嵌在tab里面 我想在对话框A中的点击某一个控件 如其为单选按钮IDC_Radio1,那么在对话框B的某一个静态文本如IDCSTATIC1就会显示如为“对话窗A中的单选按钮被按了一次”
希望能得到大家的帮助 
能有比较详细的过程描述 关键部分由代码 
谢谢了  弄了好久了

解决方案 »

  1.   

    把B的对话框句柄传入A中
    在A中点击按钮的响应中 ::SetDlgItemText(hWnd_b, IDC_STATIC1, _T("XXXXXX"))
      

  2.   

    B跟A有关系吗?如果B是A的父窗口可以用GetParent()获取句柄,((强制转换)GetParent()->GetDlgItem(ID))->SetDlgItemText(hWnd_b, IDC_STATIC1, _T("XXXXXX")),如果不是父子关系估计只能在A中包涵B的头文件,然后定义对象获取句柄了,我也是新手,不对之处多多包涵谢谢
      

  3.   

    是单文档程序吗,你能否在文档类中,保存一个CDialogA*的指针,然后在dialog A init dialog的时候把
    m_pDialogA = this; 这样CDialogB类中就可以取到m_pDialogA的指针。可以用GetSafeHwnd取到窗口句柄,再调用::SetItemDlgText函数。或者你可以在其他地方保存CDialogA的指针。
      

  4.   

    设个BOOL bl_Radio全局变量,A中按下bl_Radio = TURE,B中判断if(bl_Radio){GetDlgItem(IDC_STATIC1)->SetWindowText("...")}
      

  5.   

    我在响应单选按钮IDC_Radio1事件有下面的代码
    Dialog2 dlg2;
    HWND hwnd;
    dlg2.Create(IDD_DIALOG2);
    hwnd=dlg2.GetSafeHwnd();//在主对话框的构造函数中获得弹出的对话框的句柄
    ::SetDlgItemText(hwnd,IDC_STATIC1,_T("对话窗A中的单选按钮被按了一次"));
    编译,运行
    但是发现没有静态文本没有反应 ??
    向各位高手求助
      

  6.   

    第一:你放一个断点在IDC_Radio1的事件中,检查有没有走到这。
    第二:::SetDlgItemText(hwnd,IDC_STATIC1,_T("对话窗A中的单选按钮被按了一次"));调用后,dlg2.Invalidate();重刷一次看看。
      

  7.   

    先GetParent()获取Tab控件对象,然后通过Tab控件找到B对象进行操作
    比如Tab控件的类名是C,你将A和B声明在C里面的,然后在A里面调用
    ((C*)(GetParent()->GetParent()))->B.GetDlgItem(IDC_STATIC1)->SetWindowText("...")
    好像是要调用两个GetParent,记不太清了,你试一下看可以不