我正在創建一個模態對話框,並根據用戶指定的數量動態創建文本框。然後我這些文本框的值存儲在一個向量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