我正在创建一个模态对话框,并根据用户指定的数量动态创建文本框。然后我这些文本框的值存储在一个向量MFC对话框返回矢量
vector <CString*> textBoxText;
我要传递的载体回对话框关闭时。我试着将一个指针传入对话框并更新指针:void CRadioDialog :: OnBnClickedOk()。但是,这并不奏效。我不认为我可以通过数据交换来做到这一点,有没有办法做到这一点?
感谢,
我正在创建一个模态对话框,并根据用户指定的数量动态创建文本框。然后我这些文本框的值存储在一个向量MFC对话框返回矢量
vector <CString*> textBoxText;
我要传递的载体回对话框关闭时。我试着将一个指针传入对话框并更新指针:void CRadioDialog :: OnBnClickedOk()。但是,这并不奏效。我不认为我可以通过数据交换来做到这一点,有没有办法做到这一点?
感谢,
感谢所有帮助,我结束了使用这种方法,很容易,从不同的论坛建议:
我加入这个到dialog.h文件:
public:
const std::vector<CString>& TextBoxTexts() const
{
return textBoxText;
}
,并呼吁它在我的主要观点:
CRadioDialog dialog;
if(rDLG.DoModal() == IDOK)
{
vector<CString> text;
text = dialog.TextBoxTexts();
}
你可以做到这一点。只要确保你返回实际的CString
对象,而不是指针!
vector <CString> textBoxText;
什么是OnBnClickedOk
?
这是在对话框上按下“确定”按钮时的处理程序。你能解释一下如何归还吗? – mgalal 2012-07-07 18:24:02
假设你有一个本地成员CRadioDialog.h:
std::vector <CString> textBoxText;
我建议你使用CString的heare代替CString的*
,你可以添加一个方法到您的CRadioDialog.h:
void fill_my_vector(std::vector<CString>& out_vector);
和CRadioDialog.cpp:
void CRadioDialog::fill_my_vector(std::vector<CString>& out_vector)
{
std::copy (textBoxText.begin(), textBoxText.end(), out_vector.begin());
}
你已经填写你的本地textBoxText与CRadioDialog :: OnBnClickedOk()
调用代码你cstrings: 无效main_window ::调用者(){ ...
std::vector <CString> results;
CRadioDialog dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
dlg.fill_my_vector(results);
/* USE YOUR VECTOR */
}
...
}
这不是最佳的optiomization方法,但很容易undestand。 希望它有帮助。
您可以在构造函数中传递引用。或者,您可以在返回矢量的对话框类中创建另一个函数。 – 2012-07-09 02:27:10