Udostępnij za pośrednictwem


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.

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ęCDataExchange, UpdateData skonfiguruje obiekt i wywołuje zastąpienie klasy dialogowej CDialogfunkcji 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 UpdateDataelement .

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