簡體   English   中英

MFC對話框返回向量

[英]MFC Dialog return vector

我正在創建一個模態對話框,並根據用戶指定的數量動態創建文本框。 然后,我將這些文本框的值存儲在向量中

vector <CString*> textBoxText;

我想在對話框關閉時傳回向量。 我嘗試將指針傳遞到對話框並更新指針:void CRadioDialog :: OnBnClickedOk()。 但是,這沒有用。 我不認為我可以通過數據交換做到這一點,有沒有辦法完成它?

謝謝,

你能行的。 只是確保你返回實際的CString對象,而不是指針!

vector <CString> textBoxText; 

什么是OnBnClickedOk

假設您有一個本地成員CRadioDialog.h:

std::vector <CString> textBoxText;

我建議你使用CString而不是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()上的cstrings填充了本地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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM