반응형
MFC
의DDX
(Dynamic Data Exchange
) 는 대화 상자의 컨트롤과 멤버 변수 간 데이터를 자동으로 동기화하는 기능 입니다.DDV
(Dynamic Data Validation
) 를 사용하여 입력값을 검증할 수도 있습니다.UpdateData()
함수를 활용하면 컨트롤과 변수 간 데이터 교환이 가능합니다.
MFC
에서DoDataExchange(CDataExchange* pDX)
함수를 오버라이드하여 컨트롤과 변수 간 데이터를 주고받을 때 사용됩니다.- 컨트롤 → 변수 (읽기)
- 변수 → 컨트롤 (쓰기)
- MFC의
DDX_Text
,DDX_Check
등을 활용하여 데이터 동기화를 수행합니다.
-
cpp
class CMyDialog : public CDialogEx { public: CMyDialog() : CDialogEx(IDD_MYDIALOG) {} enum { IDD = IDD_MYDIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); private: int m_nValue; // Edit Control과 연결될 변수 }; void CMyDialog::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); // IDC_EDIT1 컨트롤과 m_nValue 변수 연결 DDX_Text(pDX, IDC_EDIT1, m_nValue); }
-
함수 설명 DDX_Text(pDX, IDC_EDIT1, m_nValue);
Edit Control
과int
,CString
등 데이터 동기화DDX_Check(pDX, IDC_CHECK1, m_bChecked);
Checkbox
와BOOL
변수 동기화DDX_Radio(pDX, IDC_RADIO1, m_nRadio);
Radio
버튼과int
변수 동기화DDX_CBString(pDX, IDC_COMBO1, m_strCombo);
ComboBox
와CString
동기화DDX_Slider(pDX, IDC_SLIDER1, m_nSlider);
Slider Control
과int
동기화
DDV
함수를 활용하면 사용자의 입력값을 검증할 수 있습니다.
-
cpp
void CMyDialog::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_nValue); // 1~100 사이의 값만 허용 DDV_MinMaxInt(pDX, m_nValue, 1, 100); }
- 사용자가
IDC_EDIT1
에 1~100 범위를 벗어나는 값을 입력할 경우 경고 메시지가 뜨게 됩니다.
UpdateData(TRUE)
와UpdateData(FALSE)
를 사용하여 컨트롤과 변수 간 데이터를 동기화할 수 있습니다.- ✅ UpdateData(TRUE)
- 컨트롤 → 변수 전송
- 대화 상자의 입력값을 변수에 저장할 때 사용
- ✅ UpdateData(FALSE)
- 변수 → 컨트롤 반영
- 변수 값을 UI 컨트롤에 업데이트할 때 사용
- ✅ UpdateData(TRUE)
-
cpp
void CMyDialog::OnButtonClick() { UpdateData(TRUE); // 컨트롤 → 변수 m_nValue += 10; // 값 변경 UpdateData(FALSE); // 변수 → 컨트롤 }
- 위 코드에서 버튼을 클릭하면
m_nValue
값이 10 증가하고, 이를 다시 Edit Control에 표시합니다.
DoDataExchange()
에서DDX_
함수를 활용해 컨트롤과 변수 연결.DDV_
함수로 입력값 검증 가능.UpdateData(TRUE)
→ 컨트롤 값 → 변수로 가져옴.UpdateData(FALSE)
→ 변수 값 → 컨트롤에 반영.
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
- 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.
728x90
반응형
'C C++' 카테고리의 다른 글
C++ COM(Component Object Model), ActiveX(OCX) 사용 예제 (0) | 2025.03.13 |
---|---|
MFC 주요 클래스 설명 (0) | 2025.03.13 |
C++ 인자 처리(argument parsing) 라이브러리 가이드 (0) | 2025.03.13 |
C++ Callable과 함수 객체(Functor) 활용하기 (0) | 2025.03.12 |
C++ 다양한 숫자 출력 형식 (0) | 2025.03.12 |