안녕하세요!
이번 포스팅에서는 DoDataExchange 함수의 역할과 사용법에 대해 알아보겠습니다.
DoDataExchange 함수는 MFC 프로젝트의 UI 요소와 멤버 변수 간의 데이터를 교환하는 데 사용됩니다.
DoDataExchange
MFC 다이얼로그 클래스에서 주로 사용되며, 다이얼로그의 UI 컨트롤과 해당 클래스의 멤버 변수 간에 데이터를 교환하는 역할을 합니다.
- 컨트롤에서 멤버 변수로의 데이터 전송 : UI 요소(텍스트 상자, 체크 박스 등)에서 입력된 데이터를 해당 멤버 변수에 복사합니다.
- 멤버 변수에서 컨트롤로의 데이터 전송 : 멤버 변수의 값으로 UI 요소를 초기화합니다.
사용방법
DoDataExchange 함수는 CDataExchange 클래스의 객체를 통해 호출됩니다.
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
// 컨트롤 변수 설정
DDX_Control(pDX, IDC_BUTTON_OK, m_btnOK);
DDX_Control(pDX, IDC_COMBO_COLORS, m_comboColors);
// 데이터 교환 작업
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
DDX_Check(pDX, IDC_CHECK_ENABLED, m_bEnabled);
}
- IDC_BUTTON_OK는 버튼의 ID이고, CButton 객체인 m_btnOK 객체와 실제 다이얼로그 버튼 컨트롤을 연결합니다.
- IDC_COMBO_COLORS 버튼의 ID이고, CComboBox 객체인 m_comboColors 객체와 실제 다이얼로그 콤보박스 컨트롤을 연결합니다.
- IDC_EDIT_NAME은 텍스트 상자의 ID이고 m_strName 문자열과 데이터를 교환합니다.
- IDC_CHECK_ENABLED는 체크 박스의 ID이며 자료형이 bool인 m_bEnabled 변수에 체크상태를 true/false로 저장합니다.
DDX_ *** 함수
DDX_Text, DDX_Check 등은 DoDataExchange 함수 내에서 호출되는 여러 유형의 데이터 전송 함수입니다.
1. DDX_Text
Edit control의 문자열을 읽거나 쓰는데 사용됩니다.
// m_strName 문자열을 IDC_EDIT_NAME 텍스트 상자에 표시
// IDC_EDIT_NAME 텍스트 상자요소를 m_strName 문자열에 저장
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
2. DDX_Check
체크박스의 체크 여부와 bool변수를 연결합니다.
// IDC_CHECK_ENABLED 체크 박스의 체크 여부를 m_bEnabled 변수에 설정
// m_bEnabled 변수의 값을 이용하여 IDC_CHECK_ENABLED 체크 박스의 상태를 설정
DDX_Check(pDX, IDC_CHECK_ENABLED, m_bEnabled);
3. DDX_Radio
라디오 버튼 그룹에서 선택된 항목의 인덱스와 int변수를 연결합니다.
// IDC_RADIO_SMALL이 포함된 라디오 버튼 그룹에서 선택된 항목을 m_nSizeOption 변수에 설정
// m_nSizeOption 변수의 값을 이용하여 IDC_RADIO_SMALL이 포함된 라디오 버튼 그룹의 선택을 설정
DDX_Radio(pDX, IDC_RADIO_SMALL, m_nSizeOption);
4. DDX_Slider
슬라이더 컨트롤의 값과 int변수를 연결합니다.
// IDC_SLIDER_VOLUME 슬라이더의 값을 m_nVolume 변수에 설정
// m_nVolume 변수의 값을 이용하여 IDC_SLIDER_VOLUME 슬라이더의 상태를 설정
DDX_Slider(pDX, IDC_SLIDER_VOLUME, m_nVolume);
5. DDX_LBString
리스트 박스에서 선택된 문자열과 CString 객체를 연결합니다.
// IDC_LIST_FRUITS 리스트 박스에서 선택된 문자열을 m_strSelectedFruit 변수에 설정
// m_strSelectedFruit 변수의 값을 이용하여 IDC_LIST_FRUITS 리스트 박스에서 선택 설정
DDX_LBString(pDX, IDC_LIST_FRUITS, m_strSelectedFruit);
6. DDX_Control
다이얼로그 클래스의 멤버변수와 다이얼로그 상의 컨트롤을 연결합니다.
// 다이얼로그 상의 IDC_BUTTON_OK 컨트롤과 m_btnOK 멤버 변수를 연결
// 다이얼로그 상의 IDC_COMBO_COLORS 컨트롤과 m_comboColors 멤버 변수를 연결
DDX_Control(pDX, IDC_BUTTON_OK, m_btnOK);
DDX_Control(pDX, IDC_COMBO_COLORS, m_comboColors);
DoDataExchange 함수는 MFC에서 다이얼로그 기반 응용 프로그램에서 UI 요소와 멤버 변수 간의 데이터 교환을 편리하게 처리하는 데 사용됩니다.
DoDataExchange 함수를 적절히 활용하면 UI와 데이터 간의 일관성을 유지하면서 코드를 간결하게 작성할 수 있습니다.
감사합니다.
'[C++] > MFC 프로그래밍' 카테고리의 다른 글
[C++] MFC 프로그래밍 : 문자열 리스트 (28) | 2023.09.20 |
---|---|
[C++] MFC 프로그래밍 : OnGetMinMaxInfo 함수 (21) | 2023.06.22 |
[C++] MFC 프로그래밍 : OnPaint 함수 (30) | 2023.06.19 |
[C++] MFC 프로그래밍 : ESC/Enter 종료 방지 (21) | 2023.06.19 |
[C++] MFC 프로그래밍 : PreTranslateMessage (36) | 2023.06.18 |