在对话框应用程序中在建一个对话框,点击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值为空呢?怎样将主对话框的变量值传给主对话框类?
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值为空呢?怎样将主对话框的变量值传给主对话框类?
解决方案 »
- 文件传输的算法
- CListCtrl怎么插入进度条...
- 对话框问题
- vc2003上的程序在2005上怎么build
- 运行到if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));就出错是什么原因?
- user breakpoint called from code at 0x77f813b1
- 关于回调函数的疑问
- 有关鼠标拖动的问题,help!!!
- 请问:有谁知道Microsoft的电子白板(*.NMW)的具体格式?
- 请问能否有人给我解释一下线程、进程以及他们之间的区别,谢谢了!
- debug时,waitforsignal 检测线程handle
- 前辈帮忙,关于U盘接口函数的问题
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:搜一下弄清楚什么是模式对话框和非模式对话框, :)
再if(IDOK==dlg.DoModal())
{
} 或者
if(IDOK==dlg.DoModal())
{
dlg.m_cstr=m_main;//m_cstr为edit控件上的变量
dlg.UpdateData(); }
dlg.m_cstr=m_main;//m_cstr为edit控件上的变量
if(IDOK==dlg.DoModal())
{ }
UpdateData(false);
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;
}