MFC 对话框返回向量
MFC Dialog return vector
我正在创建一个模态对话框,并根据用户指定的数量动态创建文本框。 然后,我将这些文本框的值存储在向量中
vector <CString*> textBoxText;
我想在对话框关闭时将矢量传回。 我尝试将指针传递到对话框中并更新指针:void CRadioDialog::OnBnClickedOk()。 但是,这并没有奏效。 我认为我不能通过数据交换来做到这一点,有没有办法做到这一点?
谢谢
你可以做到。只需确保返回实际的CString
对象,而不是指针即可!
vector <CString> textBoxText;
OnBnClickedOk
有什么?
假设您有一个本地成员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() );
}
你已经在CRadioDialog::OnBnClickedOk() 上用你的字符串填充你的本地textBoxText:)
电话区号: void main_window::caller() { ...
std::vector <CString> results;
CRadioDialog dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
dlg.fill_my_vector( results );
/* USE YOUR VECTOR */
}
...
}
这不是最好的优化方法,但它很容易被取消。希望对您有所帮助。
感谢您的所有帮助,我最终使用了这种方法,该方法非常简单,并从其他论坛推荐:
我将其添加到 dialog.h 文件中:
public:
const std::vector<CString>& TextBoxTexts() const
{
return textBoxText;
}
并在我的主要观点中称它为:
CRadioDialog dialog;
if(rDLG.DoModal() == IDOK)
{
vector<CString> text;
text = dialog.TextBoxTexts();
}
相关文章:
- 矩阵向量乘法(cublasDgemv)返回零
- C++中函数的向量返回类型引发错误
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 从 std<Derived>::shared_ptr 的向量返回 std::shared_ptr<Base>
- 从对象的向量返回某个类的对象
- C++ 将向量中出现 n 次的所有元素作为向量返回
- 向量返回负大小 c++
- 如何从向量返回给定类型的元素?
- 将对象的向量返回到函数
- 尝试从向量返回对象时出现"没有可行的重载运算符 [] 错误
- 调用函数时,如何通过向量返回类型
- 向量返回/加法算法的问题
- 在向量返回上移动语义行为
- 从int c++的向量返回一个无符号长
- 向量返回空 C++
- 从融合向量的std向量返回列,无需复制
- C++为空向量上的向量返回什么::back()
- 函数的向量返回
- 如何用适当的OO有效地将100万的私有向量返回给其他几个类