项目开发中,怎么引用调用对话框中控件的值
项目开发中,急!!!如何引用调用对话框中控件的值
比如有两个对话框:dlg1,dlg2;
在dlg1中通过按钮控件调用dlg2;
在dlg2中有一个列表框控件其对应的变量为m_ctrListBox,并已经通过列表框控件m_ctrListBox的AddString成员函数向其中添加了一些CString字符串.
问题:在dlg1中是否可以通过调用dlg2中m_ctrListBox的成员函数来获取列表框控件中的字符串;下面的代码可以通过编译连接
但运行时有错误,错误主要在dlg2.m_ctrListBox.GetText(item,str);这一句dlg2.m_ctrListBox.GetCount()也因该有问题!
那么有没有其他的方法可以实现(主要是通过列表框控件的成员函数等)
void dlg1::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData();
CValueDlg dlg2;
CString str;
vector<CString> VectorString;
if(IDOK == dlg2.DoModal())
{
for(int Item = 0;Item < dlg.m_ctrListBox.GetCount();Item++)
{
dlg2.m_ctrListBox.GetText(Item,str);
VectorString.push_back(str);
}
}
}
补充:dlg2中列表框控件对应变量的类型为CListBox;
------解决方案--------------------
if(IDOK == dlg2.DoModal())
{
for(int Item = 0;Item < dlg.m_ctrListBox.GetCount();Item++)
{
dlg2.m_ctrListBox.GetText(Item,str);
VectorString.push_back(str);
}
其中执行到IDOK==dlg2.DoModal()时,第二个对话框已经销毁了,m_ctrListBox控件也就随之没有了,下面代码肯定会出错了,可以将dlg2.DoModal改成弹出一个非模态对话框,如:
CDlg2 *pDlg2=new CDlg2;
pDlg2->Create(...);
pDlg2->ShowWindow(...):
比如有两个对话框:dlg1,dlg2;
在dlg1中通过按钮控件调用dlg2;
在dlg2中有一个列表框控件其对应的变量为m_ctrListBox,并已经通过列表框控件m_ctrListBox的AddString成员函数向其中添加了一些CString字符串.
问题:在dlg1中是否可以通过调用dlg2中m_ctrListBox的成员函数来获取列表框控件中的字符串;下面的代码可以通过编译连接
但运行时有错误,错误主要在dlg2.m_ctrListBox.GetText(item,str);这一句dlg2.m_ctrListBox.GetCount()也因该有问题!
那么有没有其他的方法可以实现(主要是通过列表框控件的成员函数等)
void dlg1::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData();
CValueDlg dlg2;
CString str;
vector<CString> VectorString;
if(IDOK == dlg2.DoModal())
{
for(int Item = 0;Item < dlg.m_ctrListBox.GetCount();Item++)
{
dlg2.m_ctrListBox.GetText(Item,str);
VectorString.push_back(str);
}
}
}
补充:dlg2中列表框控件对应变量的类型为CListBox;
------解决方案--------------------
if(IDOK == dlg2.DoModal())
{
for(int Item = 0;Item < dlg.m_ctrListBox.GetCount();Item++)
{
dlg2.m_ctrListBox.GetText(Item,str);
VectorString.push_back(str);
}
其中执行到IDOK==dlg2.DoModal()时,第二个对话框已经销毁了,m_ctrListBox控件也就随之没有了,下面代码肯定会出错了,可以将dlg2.DoModal改成弹出一个非模态对话框,如:
CDlg2 *pDlg2=new CDlg2;
pDlg2->Create(...);
pDlg2->ShowWindow(...):