MFC 对话框返回向量

MFC Dialog return vector

本文关键字:向量 返回 对话框 MFC      更新时间:2023-10-16

我正在创建一个模态对话框,并根据用户指定的数量动态创建文本框。 然后,我将这些文本框的值存储在向量中

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();
}