我在对话框1里想得到对话框2里一个combobox(有值了)控件的值:
方法1
CDlg2* dlg2=(CDlg2*)AfxGetApp()->GetMainWnd();
dlg2->m_combobox.GetWindowText(string);
编译通过,运行出错方法2:
CDlg2* dlg2=(CDlg2*)AfxGetApp()->GetMainWnd();
CComboBox *pWnd=&dlg->m_combobox;
pWnd->GetWindowText(string);
同样也是编译通过,运行出错
请问问什么???
怎么解决??
最好给出代码,谢谢了先!!
方法1
CDlg2* dlg2=(CDlg2*)AfxGetApp()->GetMainWnd();
dlg2->m_combobox.GetWindowText(string);
编译通过,运行出错方法2:
CDlg2* dlg2=(CDlg2*)AfxGetApp()->GetMainWnd();
CComboBox *pWnd=&dlg->m_combobox;
pWnd->GetWindowText(string);
同样也是编译通过,运行出错
请问问什么???
怎么解决??
最好给出代码,谢谢了先!!
至于编译能通过是因为你用了强制类型转换。
其实你现在得到的dlg2不是指向第二个对话框的指针要保证上述代码可用,应该在创建对话框1时把对话框2的窗口指针传入构造函数
UpdateData(1); // 把 自己edit的值记录下来
OnOK(); // 根据需要,关闭当前窗口
CMydlg2 dlg; // 创建 第二个窗口类的一个实体
dlg.str = str1; // 给这个实体的 edit窗口变量 赋值
dlg.DoModal(); // 显示这个实体
}
如果是:
//in Dlg2.cpp
#include "Dlg1,h"
....
CDlg2::FunXXX();
{
CDlg1 dlg(this);
dlg.DoModal();
}//in dlg1.h 添加成员变量
class CDlg2;//预引用
....
CDlg2* m_pPar;
// in dlg1.cpp
//在默认的构造函数中添加下面这句
m_pPar = pParent;
//在需要使用的地方
m_pPar->m_combobox.GetWindowText(string);