Sdílet prostřednictvím


Výměna dat dialogových oken

Pokud používáte mechanismus DDX, nastavíte počáteční hodnoty členských proměnných objektu dialogového okna, obvykle v OnInitDialog obslužné rutině nebo konstruktoru dialogového okna. Těsně před zobrazením dialogového okna mechanismus DDX architektury přenese hodnoty členských proměnných do ovládacích prvků v dialogovém okně, kde se zobrazí, když se samotné dialogové okno zobrazí v reakci na DoModal nebo Create. Výchozí implementace OnInitDialog ve CDialog volání UpdateData členské funkce třídy CWnd inicializovat ovládací prvky v dialogovém okně.

Stejný mechanismus přenese hodnoty z ovládacích prvků do členských proměnných, když uživatel klikne na tlačítko OK (nebo pokaždé, když zavoláte UpdateData členovou funkci s argumentem PRAVDA). Mechanismus ověřování dat dialogového okna ověřuje všechny datové položky, pro které jste zadali ověřovací pravidla.

Následující obrázek znázorňuje výměnu dat dialogového okna.

Diagram of data model and on screen dialog box data exchange.
Výměna dat dialogových oken

UpdateDatafunguje v obou směrech, jak je určeno parametrem BOOL předanými do něj. Chcete-li provést výměnu, UpdateData nastaví CDataExchange objekt a zavolá přepsání třídy dialogového CDialogokna členská DoDataExchange funkce. DoDataExchange přebírá argument typu CDataExchange. Objekt CDataExchange předaný UpdateData představuje kontext výměny, který definuje takové informace, jako je směr výměny.

Když přepíšete ( DoDataExchangenebo průvodce kódem), zadáte volání jedné funkce DDX na datový člen (ovládací prvek). Každá funkce DDX ví, jak vyměňovat data v obou směrech na základě kontextu zadaného CDataExchange argumentem předaného vaší DoDataExchange službou UpdateData.

MFC poskytuje mnoho funkcí DDX pro různé druhy výměny. Následující příklad ukazuje DoDataExchange přepsání, ve kterém se volají dvě funkce DDX a jedna Prohlížeč diagnostických dat funkce:

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_ Řádky DDX_ jsou mapování dat. Ukázkové funkce DDX a Prohlížeč diagnostických dat jsou určené pro ovládací prvek zaškrtávacího políčka a ovládací prvek pro úpravy.

Pokud uživatel zruší modální dialogové okno, OnCancel členská funkce ukončí dialogové okno a DoModal vrátí hodnotu IDCANCEL. V takovém případě se mezi dialogovým oknem a objektem dialogového okna nevymění žádná data.

Viz také

Výměna a ověřování dat dialogových oken
Práce s dialogovými okny v prostředí MFC
Ověřování dat dialogového okna