[MFC] UpdateData() 함수 사용 방법

MFC UpdateData() 함수

 

이번 포스팅에서는 CWnd::UpdateData() 함수에 대해서 알아보도록 하겠습니다.

 

UpdateData() 함수 원형


1

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

cs

 

 

UpdateData() 함수란?

 

UpdateData()함수는 DoDataExchange()함수를 간접적으로 호출해주는 함수입니다.


개발자는 UpdateData() 함수를 통해서 DoDataExchange() 함수를 호출할 수 있습니다. , DoDataExchange() 함수를 직접 호출할 수가 없어서 개발자가 UpdateData() 함수를 호출하면 내부적으로 DoDataExchange()함수가 호출 되는 것입니다.

 

UpdateData() 함수의 원형 정의에서 알 수 있듯이 UpdateData() 함수는 TRUE 혹은 FALSE 값을 가지는데, UpdateData(TRUE) 형태로 호출하면 DoDataExchange() 함수가 호출될 때 pDX->m_bSaveAndValidate 변수의 값에 TRUE가 저장되기에 컨트롤에서 멤버 변수로 데이터 교환이 이루어 집니다.

 

반대로 UpdateData(FALSE) 형태로 호출하면 DoDataExchange() 함수가 호출될 때, pDX->m_bSaveAndValidate 변수의 값에 FALSE가 저장되어서 멤버 변수에서 컨트롤로 데이터 교환이 이루어 지게 됩니다.

 

그러면 이제 실제 예제를 통해서 어떻게 사용하는지에 대하여 알아보도록 하겠습니다. 대화상자 기반의 MFC 프로젝트를 생성해 주시기 바랍니다.


 




그리고 아래와 같이 컨트롤을 배치하여 주시기 바랍니다.




 

여기까지 하셨다면 이제 Edit Contol 멤버 변수를 변수추가 마법사를 이용하여 추가하도록 하겠습니다. 우선 Edit Control에 마우스를 가져다 주시고 우클릭을 하셔서 변수 추가 메뉴를 눌러주시기 바랍니다.

 


그리고 아래와 같이 멤버 변수를 작성 하시면 되겠습니다.



그러면 CString m_strName이라는 Edit Control 멤버 변수가 추가되었습니다.

 

그럼 이제 UpdateData()함수를 실제 코드에서 어떻게 작성하는지 바로 보여드리도록 하겠습니다. 처음에는 UpdateData(TRUE) 함수를 선언하여 확인 버튼을 클릭 시 Edit Control에 작성한 이름을 컨트롤 변수에 가져와 메시지박스를 통해 보여드리도록 하겠습니다.

 

코드작성은 아래와 같이 해주시면 되겠습니다.


1

2

3

4

5

6

7

8

9

10

11

12

13

//확인 버튼 클릭 이벤트 

void CtestDlg::OnBnClickedButtonConfirm()

{

    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

    UpdateData(TRUE);

 

    CString strName = m_strName;

    CString str = _T("");

 

    str.Format("이름은 %s입니다.", strName);

    AfxMessageBox(str);

}

 

Colored by Color Scripter

cs

 

그리고 해당 프로젝트를 실행하시게 되면 아래와 같은 결과 화면이 나오게 됩니다.

 

[실행 결과 화면]

 


 

다음은 반대로 UpdateData(FALSE) 함수를 선언하여 멤버 변수의 값을 Edit Contol에 뿌려주는 것을 하겠습니다.

 

코드작성은 아래와 같이 해주시면 되겠습니다. (OnInitDialog함수에 작성해 주시면 됩니다.)


1

2

3

4

// TODO: 여기에 추가 초기화 작업을 추가합니다.

    CString strName = _T("범범조조");

    m_strName = strName;

    UpdateData(FALSE);

cs

 


 

[실행 결과 화면]

 


 

위와 같이 시작과 동시에 Edit Control의 값이 쓰여져 있는 것을 확인하실 수 있습니다.

 

이로써 MFC에서 UpdateData() 함수에 대해서 간략히 알아보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY