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 są wyświetlane, gdy okno dialogowe pojawia się w odpowiedzi na DoModal
lub Create
. Domyślna implementacja funkcji w metodzie OnInitDialog
UpdateData
wywołuje CDialog
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łujesz 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.
Wymiana danych w oknie dialogowym
UpdateData
działa w obu kierunkach, zgodnie z parametrem BOOL przekazanym do niego. Aby przeprowadzić wymianęCDataExchange
, UpdateData
skonfiguruje obiekt i wywołuje zastąpienie klasy dialogowej CDialog
funkcji składowej .DoDataExchange
DoDataExchange
przyjmuje argument typu CDataExchange
. Obiekt CDataExchange
przekazany do 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 dla każdego elementu członkowskiego danych (kontrolki). Każda funkcja DDX wie, jak wymieniać dane w obu kierunkach na podstawie kontekstu dostarczonego CDataExchange
przez argument przekazany do elementu DoDataExchange
przez UpdateData
element .
MFC udostępnia wiele funkcji DDX dla różnych rodzajów wymiany. W poniższym przykładzie przedstawiono DoDataExchange
przesłonięcia, w którym 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ą przeznaczone odpowiednio dla kontrolki pola wyboru i kontrolki pola edycji.
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ż
Wymiana i walidacja danych w oknie dialogowym
Praca z oknami dialogowymi w MFC
Walidacja danych okna dialogowego