Sdílet prostřednictvím


Výměna dat dialogového okna

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á členskou funkci UpdateData třídy CWnd k inicializaci ovládacích prvků 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 datového modelu a dialogového okna na obrazovce pro výměnu dat
Výměna dat dialogového okna

UpdateData funguje 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í objekt CDataExchange a zavolá přepsanou funkci člena CDialog vaší dialogové třídy DoDataExchange. 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ž vy (nebo mistr kódu) přepíšete DoDataExchange, zadáte volání jedné funkce DDX pro každý datový člen (ovládací prvek). Každá funkce DDX umí vyměňovat data v obou směrech na základě kontextu, který jí předává argument CDataExchange skrze DoDataExchange do 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 funkce DDV:

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

Řádky DDX_ a DDV_ jsou datová mapa. Ukázkové funkce DDX a DDV jsou určené pro ovládací prvek zaškrtávacího políčka a ovládací prvek edit-box.

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ěření dat dialogového okna
Práce s dialogovými okny v prostředí MFC
Ověření dat dialogového okna