Wymiana danych w oknie dialogowym

Jeśli używasz mechanizmu DDX, należy ustawić początkowe wartości zmiennych składowych obiektu okna dialogowego, zazwyczaj w OnInitDialog procedurze obsługi lub konstruktorze okna dialogowego. Bezpośrednio przed wyświetleniem okna dialogowego mechanizm DDX platformy przenosi wartości zmiennych składowych do kontrolek w oknie dialogowym, gdzie pojawiają się, gdy samo okno dialogowe pojawia się w odpowiedzi na DoModal lub Create. Domyślna implementacja OnInitDialog elementu w metodzie CDialogUpdateData wywołuje funkcję składową klasy CWnd w celu zainicjowania kontrolek w oknie dialogowym.

Ten sam mechanizm przenosi wartości z kontrolek do zmiennych składowych, gdy użytkownik kliknie przycisk OK (lub za każdym razem, gdy wywołasz UpdateData funkcję składową z argumentem TRUE). Mechanizm sprawdzania poprawności danych okna dialogowego weryfikuje wszystkie elementy danych, dla których określono reguły walidacji.

Na poniższej ilustracji przedstawiono wymianę danych okna dialogowego.

Diagram of data model and on screen dialog box data exchange.
Wymiana danych w oknie dialogowym

UpdateData działa w obu kierunkach, zgodnie z parametrem BOOL przekazanym do niego. Aby przeprowadzić wymianę, UpdateData skonfiguruje obiekt i wywołuje przesłonięcia klasy dialogowej CDialogfunkcji składowej DoDataExchange .CDataExchange DoDataExchange przyjmuje argument typu CDataExchange. CDataExchange Przekazany obiekt UpdateData reprezentuje kontekst wymiany, definiując takie informacje jak kierunek wymiany.

Po zastąpieniu DoDataExchange(lub kreatora kodu) należy określić wywołanie jednej funkcji DDX na element członkowski danych (kontrolka). Każda funkcja DDX wie, jak wymieniać dane w obu kierunkach na podstawie kontekstu dostarczonego CDataExchange przez argument przekazany przez DoDataExchange element .UpdateData

MFC udostępnia wiele funkcji DDX dla różnych rodzajów wymiany. W poniższym przykładzie przedstawiono DoDataExchange przesłonięcia, w których są wywoływane dwie funkcje DDX i jedna funkcja Przeglądarka danych diagnostycznych:

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);
}

Linie DDX_ i DDV_ są mapą danych. Przykładowe funkcje DDX i Przeglądarka danych diagnostycznych są wyświetlane dla kontrolki pola wyboru i kontrolki pola edycji, odpowiednio.

Jeśli użytkownik anuluje modalne okno dialogowe, OnCancel funkcja składowa kończy okno dialogowe i DoModal zwraca wartość IDCANCEL. W takim przypadku żadne dane nie są wymieniane między okno dialogowe a obiektem okna dialogowego.

Zobacz też

Exchange i walidacja danych okna dialogowego
Praca z oknami dialogowymi w MFC
Walidacja danych okna dialogowego