一个MFC程序对话框程序,建立这个对话框的子对话框,子对话框是一个非模态对话框,进行传值

想把子对话框中编辑框的内容,传到父对话框的静态文本中并显示。voidCMy2Dlg::OnButton2(){CChildDlg2*b=newCChildDlg2;b->... 想把子对话框中编辑框的内容,传到父对话框的静态文本中并显示。
void CMy2Dlg::OnButton2()
{
CChildDlg2 *b=new CChildDlg2;
b->Create(IDD_DIALOG2,this);
b->ShowWindow(SW_SHOW);

SetDlgItemText(IDC_STATIC2,m_str02);
UpdateData(FALSE);
}

//以上是父对话框中按钮的代码,建立非模态对话框,显示子对话框传来的值

void CChildDlg2::OnOK()
{
// TODO: Add extra validation here
CMy2Dlg d;
GetDlgItemText(IDC_EDIT1,m_str2);
d.m_str02=m_str2;
}//此为子对话框IDOK的代码

运行后不能显示值,菜鸟求解答~
展开
 我来答
百度网友8529544
推荐于2016-08-03 · TA获得超过313个赞
知道答主
回答量:46
采纳率:100%
帮助的人:43.4万
展开全部
你这样有很多问题,首先你一直NEW,没有DELETE,建议子对话框用模态的会简单的多。如果一定要用模态,你可以在CMy2Dlg类里面添加一个成员CChildDlg2 *b,在
OnButton2() 函数开始前先判断
void CMy2Dlg::OnButton2()
{
if(b==NULL){
b=new CChildDlg2;
b->Create(IDD_DIALOG2,this);
}
b->ShowWindow(SW_SHOW);
SetDlgItemText(IDC_STATIC2,m_str02); //这两句是错误的,此时只是显示,并没有按下OK
UpdateData(FALSE);
}
再者你子对话框的响应函数里面有个父对话框的实例,你传给的是这个实例,所以不显示。你可以在父对话框类里CPP文件添加一个全局对象CMy2Dlg *d=NULL,在INITDIALOG函数赋值,d=this;然后在CChildDlg2的CPP文件前面加extren CMy2Dlg *d,用d->m_str02=m_str2;
归悦欣cf
2012-12-03 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1324万
展开全部
一个对话框包括一个在屏幕上的窗口和一个对话框类对象。d是主对话框类的一个对象,但是这个类对象与主对话框对象一点关系也没用,自然不会显示值。应该获取父对话框对象,把m_str2赋值给父对话框对象的m_str02成员变量就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8b71b6320
2012-12-04
知道答主
回答量:30
采纳率:0%
帮助的人:14.4万
展开全部
同意306356466朋友的回答。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式