언어 : 비주얼 C++, MFC함수에 변수 이름을 전달
환경 : 비주얼 스튜디오
2005 그래서 비슷한 질문을 게시,하지만 난 묻는 것을 깨닫게했습니다 잘못된 질문. 여러 다른 변수에서 함수를 호출하기 위해 루프를 사용하려고하지만, 어딘가에 따라 프로그램이 충돌합니다.
단순화 된 코드는 아래에 있지만 실제로 설명하는 것이 더 쉽다고 생각합니다. 매개 변수로 CString을 사용하는 함수가 있습니다. 이 함수에 제공하고자하는 여러 변수가 있으므로 배열에 이름을 넣고 함수에 전달하려고합니다.
아래 코드는 내가 가진 무엇인가 //하지만, 이것은 작동하지 않는다 //
헤더 파일 :
CString m_strTop;
CString m_strLeft;
CString m_strRight;
CString m_strBottom;
CString *var[4];
소스 파일 : 생성자 ()
CString *var[4] = {
&m_strTop
, &m_strLeft
, &m_strRight
, &m_strBottom
};
소스 파일 : theFunction()
void myClass::DoDataExchange(CDataExchange* pDX)
{
CSAPrefsSubDlg::DoDataExchange(pDX);
for(int i = 2001, j = 0; i <= 2004; i++, j++)
{
// THE LINE BELOW IS WHERE THINGS GO WONKY, SPECIFICALLY AT &var[j]
DDX_Text(pDX, i, *var[j]); // 'i' is the ID of the textbox
}
}
- DDX_Text는 무엇을 기대 -
void AFXAPI DDX_Text(
CDataExchange* pDX,
int nIDC,
CString& value
);
을 내가 말한 그래서처럼, 난 그냥 필요 함수에 변수의 실제 이름을 제공하십시오. 적어도 나는 생각한다. 실제로 실제로하는 일은 대화 상자의 텍스트 상자와 텍스트 상자의 입력이 저장되는 변수 사이의 연결을 설정하는 것입니다. 내가 올바르게 역 참조하고 있지만, 이것이 올바른 접근이라고 생각하지 않습니다.
도움 주셔서 감사합니다. 그리고 나의 이전 질문에 대답 한 사람들에게, 그 문제를 잘못 설명하는 것에 대해 사과드립니다.
잘못된 것을 찍고, 복사하고 붙여 넣습니다. 나는 그것을 var * [j]로 정확하게 가지고 있지만 여전히 올바르게 작동하지 않습니다. 내가 관심있는 변수 내에 저장된 정보가 아니라 변수의 실제 이름입니다. 변수 이름의 CString 배열을 만들면됩니까? – Jon
DDX_Text는 무엇을 찾고 있습니까? CString에 대한 참조를 찾고 있다면, 그렇지 않으면 var를 CString [] = { "m_strTop", "m_strLeft", ...}로 만들어야합니다. DDX_Text를 사용한 지 오래되었지만 제 3의 매개 변수가 무엇인지 기억하지 못합니다. – miked
"변수 이름"은 무엇입니까? 귀하의 경우'DDX_Text'는'CDATAExchange :: m_bSaveAndValidate' 값에 따라'CString'에 대한 컨트롤 (editbox 또는 비슷한 것)의 값을 복사하거나 그 반대로 복사합니다. –