본문 바로가기

개발/mfc

mfc UpdateData

반응형

UpdateData(TRUE); // 컨트롤의 값을 변수로 전송
UpdateData(FALSE); // 변수의 값을 컨트롤로 전송

UpdateData()는 컨트롤과 변수의 값이 변경 되면 갱신시켜주는 함수다.
기본값은 TRUE로 설정 되어있다.
TRUE와 FALSE는 차이가 있다.
또한 MFC 컨트롤과 변수는 값을 고쳤다고 알아서 갱신되지 않는다.
이때 UpdateData()를 호출해서 갱신을 해 주어야한다.
UpdateData(TRUE)는 현재 컨트롤에 적힌 값을 변수로 넣어 갱신해준다.
UpdateData(FALSE)는 변수에 적힌 값을 컨트롤에 표시하도록 갱신해준다.
이때, 변수는 DoDataExchange에 컨트롤과 변수가 연결된 상태여야 한다.
리소스 편집기에서 컨트롤에 우측버튼을 눌러 메뉴에서 '변수 추가'를 해서
변수를 생성하면 알아서 연결이 된다. 물론 직접 해주어도 된다.

예를 들어
EditBox가 있고 value라는 변수가 있다.
에디트 박스에 '100'을 입력하면 화면에는 100이 표시 되지만 value라는 변수엔 100이 들어가지 않는다.
이때 UpdateData(TRUE)를 주면 컨트롤에 입력된 100이 변수에 들어가게 된다.
물론 GetDlgItem 같은 함수를 쓴다고 하면 상관은 없다.;;
반대로 코드내에서 value의 값을 변경시켰고 이 값을 에디트 컨트롤에 표시하고 싶다고 하면
UpdateData(FALSE)를 주면 된다.

컨트롤과 변수를 연결 시켜주면 굳이 SetDlg, GetDlg를 일일이 쓰지 않아도 된다.
---------------------------------------------------------------------------------------------
함수 원형 : BOOL UpdateData(BOOL bSaveAndValidata = TRUE);
파라미터 : bSaveAndValidate : 데이터의 이동 방향을 명시합니다.
리턴 : 에러시 0을 리턴합니다.
설명 : 파라미터에 TRUE를 넘겨주면 대화상자의 값을 멤버변수에 복사합니다.
그 반대로 FALSE를 넘겨주면 멤버변수의 값을 대화상자로 복사합니다.

반응형