关于:在对话框应用程序中在建一个对话框问题?

zhaolei5 2008-10-14 09:48:55
在对话框应用程序中在建一个对话框,点击OK按钮弹出该对话框。我想把主对话框类的一个成员变量的值传给弹出的对话框的EDIT控件上的变量,如下:
void CMyDlg::OnOK()
{
// TODO: Add extra validation here
m_main="asd";
CCdlg dlg; //CCdlg为子对话框的类
if(IDOK==dlg.DoModal())
{
dlg.m_cstr=m_main;//m_cstr为edit控件上的变量

}
CDialog::OnOK();
}
为什么程序运行到子对话框类中后,m_cstr值为空呢?怎样将主对话框的变量值传给主对话框类?
...全文
46 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaolei5 2008-10-14
  • 打赏
  • 举报
回复
谢谢大家。
woshizhanhun 2008-10-14
  • 打赏
  • 举报
回复
1.可以在创建这个对话框的构造函数里加上参数,用于传递
CCdlg::CCdlg(CString Name ,CWnd* pParent /*=NULL*/)
: CDialog(CCdlg::IDD, pParent),
m_cstr(Name)
{

}

CCdlg dlg(m_main);

2.可以在弹出对话框实现部分获取主对话框指针来赋值

CCdlg::OnInitDialog()
{
CMyDlg* parent = (CMyDlg*) GetParent();
m_cstr = parent->m_main;
}
ok208043624 2008-10-14
  • 打赏
  • 举报
回复
dlg.m_cstr=m_main后面加上
UpdateData(false);
ddszhan 2008-10-14
  • 打赏
  • 举报
回复
CCdlg dlg; //CCdlg为子对话框的类
dlg.m_cstr=m_main;//m_cstr为edit控件上的变量
if(IDOK==dlg.DoModal())
{

}
caitian6 2008-10-14
  • 打赏
  • 举报
回复
dlg.m_cstr=m_main;


if(IDOK==dlg.DoModal())
{
}

或者
if(IDOK==dlg.DoModal())
{
dlg.m_cstr=m_main;//m_cstr为edit控件上的变量
dlg.UpdateData();

}
Hiiishe 2008-10-14
  • 打赏
  • 举报
回复
if(IDOK==dlg.DoModal())
DoModal()完毕后,你才给它赋值,
把dlg.m_cstr=m_main;放在调用DoModal之前;



void CMyDlg::OnOK()
{
// TODO: Add extra validation here
m_main="asd";
CCdlg dlg; //CCdlg为子对话框的类
dlg.m_cstr=m_main;//m_cstr为edit控件上的变量
if(IDOK==dlg.DoModal())

{
}
CDialog::OnOK();
}



PS:搜一下弄清楚什么是模式对话框和非模式对话框, :)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧