基于对话框的MFC如何在一个对话框改变另外一个对话框的静态文本
基于对话框的MFC怎么在一个对话框改变另外一个对话框的静态文本
我创建了两个对话窗,如设为A和B,内嵌在tab里面 我想在对话框A中的点击某一个控件 如其为单选按钮IDC_Radio1,那么在对话框B的某一个静态文本如IDCSTATIC1就会显示如为“对话窗A中的单选按钮被按了一次”
希望能得到大家的帮助
能有比较详细的过程描述 关键部分由代码
谢谢了 弄了好久了
------解决方案--------------------
把B的对话框句柄传入A中
在A中点击按钮的响应中 ::SetDlgItemText(hWnd_b, IDC_STATIC1, _T("XXXXXX"))
------解决方案--------------------
只要能获取对话框对象,发送消息或直接添加修改的接口调用都可以的!
------解决方案--------------------
B跟A有关系吗?如果B是A的父窗口可以用GetParent()获取句柄,((强制转换)GetParent()->GetDlgItem(ID))->SetDlgItemText(hWnd_b, IDC_STATIC1, _T("XXXXXX")),如果不是父子关系估计只能在A中包涵B的头文件,然后定义对象获取句柄了,我也是新手,不对之处多多包涵。。。谢谢
------解决方案--------------------
是单文档程序吗,你能否在文档类中,保存一个CDialogA*的指针,然后在dialog A init dialog的时候把
m_pDialogA = this; 这样CDialogB类中就可以取到m_pDialogA的指针。可以用GetSafeHwnd取到窗口句柄,再调用::SetItemDlgText函数。
或者你可以在其他地方保存CDialogA的指针。
------解决方案--------------------
设个BOOL bl_Radio全局变量,A中按下bl_Radio = TURE,B中判断if(bl_Radio){GetDlgItem(IDC_STATIC1)->SetWindowText("...")}
------解决方案--------------------
第一:你放一个断点在IDC_Radio1的事件中,检查有没有走到这。
第二:::SetDlgItemText(hwnd,IDC_STATIC1,_T("对话窗A中的单选按钮被按了一次"));调用后,dlg2.Invalidate();重刷一次看看。
------解决方案--------------------
先GetParent()获取Tab控件对象,然后通过Tab控件找到B对象进行操作
比如Tab控件的类名是C,你将A和B声明在C里面的,然后在A里面调用
((C*)(GetParent()->GetParent()))->B.GetDlgItem(IDC_STATIC1)->SetWindowText("...")
好像是要调用两个GetParent,记不太清了,你试一下看可以不
我创建了两个对话窗,如设为A和B,内嵌在tab里面 我想在对话框A中的点击某一个控件 如其为单选按钮IDC_Radio1,那么在对话框B的某一个静态文本如IDCSTATIC1就会显示如为“对话窗A中的单选按钮被按了一次”
希望能得到大家的帮助
能有比较详细的过程描述 关键部分由代码
谢谢了 弄了好久了
------解决方案--------------------
把B的对话框句柄传入A中
在A中点击按钮的响应中 ::SetDlgItemText(hWnd_b, IDC_STATIC1, _T("XXXXXX"))
------解决方案--------------------
只要能获取对话框对象,发送消息或直接添加修改的接口调用都可以的!
------解决方案--------------------
B跟A有关系吗?如果B是A的父窗口可以用GetParent()获取句柄,((强制转换)GetParent()->GetDlgItem(ID))->SetDlgItemText(hWnd_b, IDC_STATIC1, _T("XXXXXX")),如果不是父子关系估计只能在A中包涵B的头文件,然后定义对象获取句柄了,我也是新手,不对之处多多包涵。。。谢谢
------解决方案--------------------
是单文档程序吗,你能否在文档类中,保存一个CDialogA*的指针,然后在dialog A init dialog的时候把
m_pDialogA = this; 这样CDialogB类中就可以取到m_pDialogA的指针。可以用GetSafeHwnd取到窗口句柄,再调用::SetItemDlgText函数。
或者你可以在其他地方保存CDialogA的指针。
------解决方案--------------------
设个BOOL bl_Radio全局变量,A中按下bl_Radio = TURE,B中判断if(bl_Radio){GetDlgItem(IDC_STATIC1)->SetWindowText("...")}
------解决方案--------------------
第一:你放一个断点在IDC_Radio1的事件中,检查有没有走到这。
第二:::SetDlgItemText(hwnd,IDC_STATIC1,_T("对话窗A中的单选按钮被按了一次"));调用后,dlg2.Invalidate();重刷一次看看。
------解决方案--------------------
先GetParent()获取Tab控件对象,然后通过Tab控件找到B对象进行操作
比如Tab控件的类名是C,你将A和B声明在C里面的,然后在A里面调用
((C*)(GetParent()->GetParent()))->B.GetDlgItem(IDC_STATIC1)->SetWindowText("...")
好像是要调用两个GetParent,记不太清了,你试一下看可以不