대화 상자 데이터 교환
DDX 메커니즘을 사용하는 경우 일반적으로 처리기 또는 대화 상자 생성자에서 OnInitDialog
대화 상자 개체의 멤버 변수의 초기 값을 설정합니다. 대화 상자가 표시되기 직전에 프레임워크의 DDX 메커니즘은 멤버 변수의 값을 대화 상자의 컨트롤로 전송합니다. 이때 대화 상자 자체가 응답 또는 Create
응답 DoModal
에 표시될 때 표시됩니다. in CDialog
의 OnInitDialog
기본 구현은 클래스 CWnd
의 멤버 함수를 호출 UpdateData
하여 대화 상자에서 컨트롤을 초기화합니다.
사용자가 확인 단추를 클릭하거나 인수 TRUE를 사용하여 멤버 함수를 호출 UpdateData
할 때마다 동일한 메커니즘이 컨트롤에서 멤버 변수로 값을 전송합니다. 대화 상자 데이터 유효성 검사 메커니즘은 유효성 검사 규칙을 지정한 모든 데이터 항목의 유효성을 검사합니다.
다음 그림에서는 대화 상자 데이터 교환을 보여 줍니다.
대화 상자 데이터 교환
UpdateData
는 BOOL 매개 변수에 의해 지정된 대로 양방향으로 작동합니다. 교환 UpdateData
을 수행하려면 개체를 CDataExchange
설정하고 대화 상자 클래스의 멤버 함수 재정의 CDialog
를 DoDataExchange
호출합니다. DoDataExchange
는 형식 CDataExchange
의 인수를 사용합니다. 전달된 UpdateData
개체는 CDataExchange
교환의 컨텍스트를 나타내며 교환 방향과 같은 정보를 정의합니다.
사용자(또는 코드 마법사)가 재정 DoDataExchange
의하는 경우 데이터 멤버(컨트롤)당 하나의 DDX 함수에 대한 호출을 지정합니다. 각 DDX 함수는 사용자가 전달한 인수에서 제공하는 컨텍스트에 따라 양방향으로 CDataExchange
데이터를 교환하는 방법을 알고 있습니다 DoDataExchange
UpdateData
.
MFC는 다양한 종류의 교환에 대해 많은 DDX 함수를 제공합니다. 다음 예제에서는 두 개의 DDX 함수와 하나의 DDV 함수가 호출되는 재정의를 보여 DoDataExchange
줍니다.
void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVal);
DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName);
DDV_MaxChars(pDX, m_strName, 20);
}
및 DDV_
줄은 DDX_
데이터 맵입니다. 표시된 샘플 DDX 및 DDV 함수는 각각 검사 상자 컨트롤과 편집 상자 컨트롤을 위한 것입니다.
사용자가 모달 대화 상자를 취소하면 멤버 함수는 OnCancel
대화 상자를 종료하고 DoModal
IDCANCEL 값을 반환합니다. 이 경우 대화 상자와 대화 상자 개체 간에 데이터가 교환되지 않습니다.