Bagikan melalui


Dialog Data Exchange

Jika Anda menggunakan mekanisme DDX, Anda mengatur nilai awal variabel anggota objek dialog, biasanya di handler atau OnInitDialog konstruktor dialog. Segera sebelum dialog ditampilkan, mekanisme DDX kerangka kerja mentransfer nilai variabel anggota ke kontrol dalam kotak dialog, di mana mereka muncul ketika kotak dialog itu sendiri muncul sebagai respons terhadap DoModal atau Create. Implementasi OnInitDialog default dalam CDialog memanggil UpdateData fungsi anggota kelas CWnd untuk menginisialisasi kontrol dalam kotak dialog.

Mekanisme yang sama mentransfer nilai dari kontrol ke variabel anggota ketika pengguna mengklik tombol OK (atau setiap kali Anda memanggil UpdateData fungsi anggota dengan argumen TRUE). Mekanisme validasi data dialog memvalidasi item data apa pun yang Anda tentukan aturan validasinya.

Gambar berikut mengilustrasikan pertukaran data dialog.

Diagram of data model and on screen dialog box data exchange.
Dialog Data Exchange

UpdateDatabekerja di kedua arah, seperti yang ditentukan oleh parameter BOOL yang diteruskan ke sana. Untuk melakukan pertukaran, UpdateData siapkan CDataExchange objek dan panggil penggantian kelas dialog Anda dari CDialogDoDataExchange fungsi anggota. DoDataExchange mengambil argumen jenis CDataExchange. Objek CDataExchange yang diteruskan untuk UpdateData mewakili konteks pertukaran, menentukan informasi seperti arah pertukaran.

Saat Anda (atau wizard Kode) mengambil alih DoDataExchange, Anda menentukan panggilan ke satu fungsi DDX per anggota data (kontrol). Setiap fungsi DDX tahu cara bertukar data di kedua arah berdasarkan konteks yang disediakan oleh argumen yang CDataExchange diteruskan ke Anda DoDataExchange oleh UpdateData.

MFC menyediakan banyak fungsi DDX untuk berbagai jenis pertukaran. Contoh berikut menunjukkan DoDataExchange penimpaan di mana dua fungsi DDX dan satu fungsi DDV dipanggil:

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

Garis DDX_ dan DDV_ adalah peta data. Contoh fungsi DDX dan DDV yang ditampilkan masing-masing adalah untuk kontrol kotak centang dan kontrol kotak edit.

Jika pengguna membatalkan kotak dialog modal, OnCancel fungsi anggota mengakhiri kotak dialog dan DoModal mengembalikan nilai IDCANCEL. Dalam hal ini, tidak ada data yang dipertukarkan antara kotak dialog dan objek dialog.

Baca juga

Pertukaran dan Validasi Data Dialog
Bekerja dengan Kotak Dialog di MFC
Validasi Data Dialog