一个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的代码
运行后不能显示值,菜鸟求解答~ 展开
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的代码
运行后不能显示值,菜鸟求解答~ 展开
3个回答
展开全部
你这样有很多问题,首先你一直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;
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;
展开全部
一个对话框包括一个在屏幕上的窗口和一个对话框类对象。d是主对话框类的一个对象,但是这个类对象与主对话框对象一点关系也没用,自然不会显示值。应该获取父对话框对象,把m_str2赋值给父对话框对象的m_str02成员变量就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意306356466朋友的回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询