[英]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.