Bagikan melalui


Kelas CDialog

Kelas dasar yang digunakan untuk menampilkan kotak dialog di layar.

Sintaks

class CDialog : public CWnd

Anggota

Konstruktor Publik

Nama Deskripsi
CDialog::CDialog Membuat CDialog objek.

Metode Publik

Nama Deskripsi
CDialog::Create Menginisialisasi objek CDialog. Membuat kotak dialog tanpa mode dan melampirkannya ke CDialog objek.
CDialog::CreateIndirect Membuat kotak dialog tanpa mode dari templat kotak dialog dalam memori (bukan berbasis sumber daya).
CDialog::D oModal Memanggil kotak dialog modal dan kembali setelah selesai.
CDialog::EndDialog Menutup kotak dialog modal.
CDialog::GetDefID Mendapatkan ID kontrol tombol dorong default untuk kotak dialog.
CDialog::GotoDlgCtrl Memindahkan fokus ke kontrol kotak dialog tertentu dalam kotak dialog.
CDialog::InitModalIndirect Membuat kotak dialog modal dari templat kotak dialog dalam memori (bukan berbasis sumber daya). Parameter disimpan sampai fungsi DoModal dipanggil.
CDialog::MapDialogRect Mengonversi unit kotak dialog persegi menjadi unit layar.
CDialog::NextDlgCtrl Memindahkan fokus ke kontrol kotak dialog berikutnya dalam kotak dialog.
CDialog::OnInitDialog Ganti ke inisialisasi kotak dialog augment.
CDialog::OnSetFont Ambil alih untuk menentukan font yang digunakan kontrol kotak dialog saat menggambar teks.
CDialog::P revDlgCtrl Memindahkan fokus ke kontrol kotak dialog sebelumnya dalam kotak dialog.
CDialog::SetDefID Mengubah kontrol tombol dorong default untuk kotak dialog ke tombol dorong tertentu.
CDialog::SetHelpID Mengatur ID bantuan peka konteks untuk kotak dialog.

Metode yang Dilindungi

Nama Deskripsi
CDialog::OnCancel Ambil alih untuk melakukan tombol Batalkan atau tindakan kunci ESC. Default menutup kotak dialog dan DoModal mengembalikan IDCANCEL.
CDialog::OnOK Ambil alih untuk melakukan tindakan tombol OK dalam kotak dialog modal. Default menutup kotak dialog dan DoModal mengembalikan IDOK.

Keterangan

Kotak dialog terdiri dari dua jenis: modal dan modeless. Kotak dialog modal harus ditutup oleh pengguna sebelum aplikasi berlanjut. Kotak dialog tanpa mode memungkinkan pengguna menampilkan kotak dialog dan kembali ke tugas lain tanpa membatalkan atau menghapus kotak dialog.

Objek CDialog adalah kombinasi templat dialog dan CDialogkelas -turunan. Gunakan editor dialog untuk membuat templat dialog dan menyimpannya dalam sumber daya, lalu gunakan wizard Tambahkan Kelas untuk membuat kelas yang berasal dari CDialog.

Kotak dialog, seperti jendela lainnya, menerima pesan dari Windows. Dalam kotak dialog, Anda sangat tertarik untuk menangani pesan pemberitahuan dari kontrol kotak dialog karena itulah cara pengguna berinteraksi dengan kotak dialog Anda. Gunakan Panduan Kelas untuk memilih pesan mana yang ingin Anda tangani dan akan menambahkan entri peta pesan dan fungsi anggota penanganan pesan yang sesuai ke kelas untuk Anda. Anda hanya perlu menulis kode khusus aplikasi dalam fungsi anggota handler.

Jika mau, Anda selalu dapat menulis entri peta pesan dan fungsi anggota secara manual.

Dalam semua kotak dialog kecuali yang paling sepele, Anda menambahkan variabel anggota ke kelas dialog turunan Anda untuk menyimpan data yang dimasukkan dalam kontrol kotak dialog oleh pengguna atau untuk menampilkan data untuk pengguna. Anda bisa menggunakan wizard Tambahkan Variabel untuk membuat variabel anggota dan mengaitkannya dengan kontrol. Pada saat yang sama, Anda memilih jenis variabel dan rentang nilai yang diizinkan untuk setiap variabel. Wizard kode menambahkan variabel anggota ke kelas dialog turunan Anda.

Peta data dihasilkan untuk menangani pertukaran data secara otomatis antara variabel anggota dan kontrol kotak dialog. Peta data menyediakan fungsi yang menginisialisasi kontrol dalam kotak dialog dengan nilai yang tepat, mengambil data, dan memvalidasi data.

Untuk membuat kotak dialog modal, buat objek pada tumpukan menggunakan konstruktor untuk kelas dialog turunan Anda lalu panggil DoModal untuk membuat jendela dialog dan kontrolnya. Jika Anda ingin membuat dialog tanpa mode, panggil Create konstruktor kelas dialog Anda.

Anda juga dapat membuat templat dalam memori dengan menggunakan struktur data DLGTEMPLATE seperti yang dijelaskan di Windows SDK. Setelah Anda membuat CDialog objek, panggil CreateIndirect untuk membuat kotak dialog tanpa mode, atau panggil InitModalIndirect dan DoModal untuk membuat kotak dialog modal.

Peta data pertukaran dan validasi ditulis dalam penimpaan CWnd::DoDataExchange yang ditambahkan ke kelas dialog baru Anda. Lihat fungsi anggota DoDataExchange untuk CWnd informasi selengkapnya tentang fungsionalitas pertukaran dan validasi.

Baik programmer maupun kerangka kerja memanggil DoDataExchange secara tidak langsung melalui panggilan ke CWnd::UpdateData.

Kerangka kerja memanggil UpdateData saat pengguna mengklik tombol OK untuk menutup kotak dialog modal. (Data tidak diambil jika tombol Batal diklik.) Implementasi default OnInitDialog juga memanggil UpdateData untuk mengatur nilai awal kontrol. Anda biasanya mengambil alih OnInitDialog untuk menginisialisasi kontrol lebih lanjut. OnInitDialog dipanggil setelah semua kontrol dialog dibuat dan tepat sebelum kotak dialog ditampilkan.

Anda dapat memanggil CWnd::UpdateData kapan saja selama eksekusi kotak dialog modal atau tanpa mode.

Jika Anda mengembangkan kotak dialog dengan tangan, Anda menambahkan variabel anggota yang diperlukan ke kelas kotak dialog turunan sendiri, dan Anda menambahkan fungsi anggota untuk mengatur atau mendapatkan nilai-nilai ini.

Kotak dialog modal ditutup secara otomatis saat pengguna menekan tombol OK atau Batal atau saat kode Anda memanggil EndDialog fungsi anggota.

Saat Anda menerapkan kotak dialog tanpa mode, selalu ambil alih OnCancel fungsi anggota dan panggil DestroyWindow dari dalamnya. Jangan panggil kelas CDialog::OnCanceldasar , karena memanggil EndDialog, yang akan membuat kotak dialog tidak terlihat tetapi tidak akan menghancurkannya. Anda juga harus mengambil PostNcDestroy alih kotak dialog tanpa mode untuk menghapus this, karena kotak dialog tanpa mode biasanya dialokasikan dengan new. Kotak dialog modal biasanya dibangun pada bingkai dan tidak perlu PostNcDestroy dibersihkan.

Untuk informasi selengkapnya tentang CDialog, lihat Kotak Dialog.

Hierarki Warisan

CObject

CCmdTarget

CWnd

CDialog

Persyaratan

Header: afxwin.h

CDialog::CDialog

Untuk membuat kotak dialog modal berbasis sumber daya, panggil salah satu bentuk publik konstruktor.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

Parameter

lpszTemplateName
Berisi string null-terminated yang merupakan nama sumber daya templat kotak dialog.

nIDTemplate
Berisi nomor ID sumber daya templat kotak dialog.

pParentWnd
Arahkan ke objek jendela induk atau pemilik (jenis CWnd) tempat objek dialog berada. Jika NULL, jendela induk objek dialog diatur ke jendela aplikasi utama.

Keterangan

Salah satu bentuk konstruktor menyediakan akses ke sumber daya dialog berdasarkan nama templat. Konstruktor lain menyediakan akses berdasarkan nomor ID templat, biasanya dengan awalan IDD_ (misalnya, IDD_DIALOG1).

Untuk membuat kotak dialog modal dari templat dalam memori, pertama-tama panggil konstruktor tanpa parameter dan dilindungi lalu panggil InitModalIndirect.

Setelah Anda membuat kotak dialog modal dengan salah satu metode di atas, panggil DoModal.

Untuk membuat kotak dialog tanpa mode, gunakan bentuk konstruktor yang CDialog dilindungi. Konstruktor dilindungi karena Anda harus memperoleh kelas kotak dialog Anda sendiri untuk mengimplementasikan kotak dialog tanpa mode. Konstruksi kotak dialog tanpa mode adalah proses dua langkah. Pertama panggil konstruktor; lalu panggil Create fungsi anggota untuk membuat kotak dialog berbasis sumber daya, atau panggil CreateIndirect untuk membuat kotak dialog dari templat dalam memori.

CDialog::Create

Panggil Create untuk membuat kotak dialog tanpa mode menggunakan templat kotak dialog dari sumber daya.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

Parameter

lpszTemplateName
Berisi string null-terminated yang merupakan nama sumber daya templat kotak dialog.

pParentWnd
Arahkan ke objek jendela induk (tipe CWnd) tempat objek dialog berada. Jika NULL, jendela induk objek dialog diatur ke jendela aplikasi utama.

nIDTemplate
Berisi nomor ID sumber daya templat kotak dialog.

Tampilkan Nilai

Kedua formulir mengembalikan bukan nol jika pembuatan kotak dialog dan inisialisasi berhasil; jika tidak, 0.

Keterangan

Anda dapat melakukan panggilan ke Create dalam konstruktor atau memanggilnya setelah konstruktor dipanggil.

Dua bentuk Create fungsi anggota disediakan untuk akses ke sumber daya templat kotak dialog dengan nama templat atau nomor ID templat (misalnya, IDD_DIALOG1).

Untuk salah satu formulir, teruskan penunjuk ke objek jendela induk. Jika pParentWnd ADALAH NULL, kotak dialog akan dibuat dengan jendela induk atau pemiliknya diatur ke jendela aplikasi utama.

Fungsi Create anggota kembali segera setelah membuat kotak dialog.

Gunakan gaya WS_VISIBLE dalam templat kotak dialog jika kotak dialog akan muncul saat jendela induk dibuat. Jika tidak, Anda harus memanggil ShowWindow. Untuk gaya kotak dialog lebih lanjut dan aplikasinya, lihat struktur DLGTEMPLATE di Windows SDK dan Window Styles di Referensi MFC.

CWnd::DestroyWindow Gunakan fungsi untuk menghancurkan kotak dialog yang dibuat oleh Create fungsi.

Contoh

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

Panggil fungsi anggota ini untuk membuat kotak dialog tanpa mode dari templat kotak dialog dalam memori.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parameter

lpDialogTemplate
Menunjuk ke memori yang berisi templat kotak dialog yang digunakan untuk membuat kotak dialog. Templat ini dalam bentuk struktur dan informasi kontrol DLGTEMPLATE , seperti yang dijelaskan dalam Windows SDK.

pParentWnd
Menunjuk ke objek jendela induk objek dialog (tipe CWnd). Jika NULL, jendela induk objek dialog diatur ke jendela aplikasi utama.

lpDialogInit
Menunjuk ke sumber daya DLGINIT.

hDialogTemplate
Berisi handel ke memori global yang berisi templat kotak dialog. Templat ini dalam bentuk DLGTEMPLATE struktur dan data untuk setiap kontrol dalam kotak dialog.

Tampilkan Nilai

Bukan nol jika kotak dialog dibuat dan berhasil diinisialisasi; jika tidak, 0.

Keterangan

Fungsi CreateIndirect anggota kembali segera setelah membuat kotak dialog.

Gunakan gaya WS_VISIBLE dalam templat kotak dialog jika kotak dialog akan muncul saat jendela induk dibuat. Jika tidak, Anda harus memanggil ShowWindow untuk menyebabkannya muncul. Untuk informasi selengkapnya tentang bagaimana Anda dapat menentukan gaya kotak dialog lainnya dalam templat, lihat struktur DLGTEMPLATE di Windows SDK.

CWnd::DestroyWindow Gunakan fungsi untuk menghancurkan kotak dialog yang dibuat oleh CreateIndirect fungsi.

Kotak dialog yang berisi kontrol ActiveX memerlukan informasi tambahan yang disediakan dalam sumber daya DLGINIT.

CDialog::D oModal

Panggil fungsi anggota ini untuk memanggil kotak dialog modal dan mengembalikan hasil kotak dialog setelah selesai.

virtual INT_PTR DoModal();

Tampilkan Nilai

Nilai int yang menentukan nilai parameter nResult yang diteruskan ke fungsi anggota CDialog::EndDialog , yang digunakan untuk menutup kotak dialog. Nilai pengembalian adalah -1 jika fungsi tidak dapat membuat kotak dialog, atau IDABORT jika beberapa kesalahan lain terjadi, dalam hal ini jendela output akan berisi informasi kesalahan dari GetLastError.

Keterangan

Fungsi anggota ini menangani semua interaksi dengan pengguna saat kotak dialog aktif. Inilah yang membuat kotak dialog modal; artinya, pengguna tidak dapat berinteraksi dengan jendela lain hingga kotak dialog ditutup.

Jika pengguna mengklik salah satu tombol push dalam kotak dialog, seperti OK atau Batal, fungsi anggota penanganan pesan, seperti OnOK atau OnCancel, dipanggil untuk mencoba menutup kotak dialog. Fungsi anggota default OnOK akan memvalidasi dan memperbarui data kotak dialog dan menutup kotak dialog dengan IDOK hasil, dan fungsi anggota default OnCancel akan menutup kotak dialog dengan IDCANCEL hasil tanpa memvalidasi atau memperbarui data kotak dialog. Anda dapat mengambil alih fungsi penanganan pesan ini untuk mengubah perilakunya.

Catatan

PreTranslateMessage sekarang dipanggil untuk pemrosesan pesan kotak dialog modal.

Contoh

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

Panggil fungsi anggota ini untuk mengakhiri kotak dialog modal.

void EndDialog(int nResult);

Parameter

nResult
Berisi nilai yang akan dikembalikan dari kotak dialog ke pemanggil DoModal.

Keterangan

Fungsi anggota ini mengembalikan nResult sebagai nilai pengembalian .DoModal Anda harus menggunakan EndDialog fungsi untuk menyelesaikan pemrosesan setiap kali kotak dialog modal dibuat.

Anda dapat menghubungi EndDialog kapan saja, bahkan di OnInitDialog, dalam hal ini Anda harus menutup kotak dialog sebelum ditampilkan atau sebelum fokus input diatur.

EndDialog tidak segera menutup kotak dialog. Sebaliknya, ini mengatur bendera yang mengarahkan kotak dialog untuk menutup segera setelah handler pesan saat ini kembali.

Contoh

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

GetDefID Panggil fungsi anggota untuk mendapatkan ID kontrol tombol dorong default untuk kotak dialog.

DWORD GetDefID() const;

Tampilkan Nilai

Nilai 32-bit ( DWORD). Jika tombol dorong default memiliki nilai ID, kata urutan tinggi berisi DC_HASDEFID dan kata urutan rendah berisi nilai ID. Jika tombol dorong default tidak memiliki nilai ID, nilai yang dikembalikan adalah 0.

Keterangan

Ini biasanya merupakan tombol OK.

CDialog::GotoDlgCtrl

Memindahkan fokus ke kontrol yang ditentukan dalam kotak dialog.

void GotoDlgCtrl(CWnd* pWndCtrl);

Parameter

pWndCtrl
Mengidentifikasi jendela (kontrol) yang akan menerima fokus.

Keterangan

Untuk mendapatkan penunjuk ke kontrol (jendela anak) untuk diteruskan sebagai pWndCtrl, panggil CWnd::GetDlgItem fungsi anggota, yang mengembalikan penunjuk ke objek CWnd.

Contoh

Lihat contoh untuk CWnd::GetDlgItem.

CDialog::InitModalIndirect

Panggil fungsi anggota ini untuk menginisialisasi objek dialog modal menggunakan templat kotak dialog yang Anda buat dalam memori.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parameter

lpDialogTemplate
Menunjuk ke memori yang berisi templat kotak dialog yang digunakan untuk membuat kotak dialog. Templat ini dalam bentuk struktur dan informasi kontrol DLGTEMPLATE , seperti yang dijelaskan dalam Windows SDK.

hDialogTemplate
Berisi handel ke memori global yang berisi templat kotak dialog. Templat ini dalam bentuk DLGTEMPLATE struktur dan data untuk setiap kontrol dalam kotak dialog.

pParentWnd
Arahkan ke objek jendela induk atau pemilik (jenis CWnd) tempat objek dialog berada. Jika NULL, jendela induk objek dialog diatur ke jendela aplikasi utama.

lpDialogInit
Menunjuk ke sumber daya DLGINIT.

Tampilkan Nilai

Bukan nol jika objek dialog dibuat dan berhasil diinisialisasi; jika tidak, 0.

Keterangan

Untuk membuat kotak dialog modal secara tidak langsung, pertama-tama alokasikan blok memori global dan isi dengan templat kotak dialog. Kemudian panggil konstruktor kosong CDialog untuk membuat objek kotak dialog. Selanjutnya, panggil InitModalIndirect untuk menyimpan handel Anda ke templat kotak dialog dalam memori. Kotak dialog Windows dibuat dan ditampilkan nanti, ketika fungsi anggota DoModal dipanggil.

Kotak dialog yang berisi kontrol ActiveX memerlukan informasi tambahan yang disediakan dalam sumber daya DLGINIT.

CDialog::MapDialogRect

Panggil untuk mengonversi unit kotak dialog persegi menjadi unit layar.

void MapDialogRect(LPRECT lpRect) const;

Parameter

lpRect
Arahkan ke struktur RECT atau objek CRect yang berisi koordinat kotak dialog yang akan dikonversi.

Keterangan

Unit kotak dialog dinyatakan dalam hal unit dasar kotak dialog saat ini yang berasal dari lebar rata-rata dan tinggi karakter dalam font yang digunakan untuk teks kotak dialog. Satu unit horizontal adalah sebelas dari unit lebar dasar kotak dialog, dan satu unit vertikal adalah satu perdelapan dari unit tinggi dasar kotak dialog.

Fungsi GetDialogBaseUnits Windows mengembalikan informasi ukuran untuk font sistem, tetapi Anda dapat menentukan font yang berbeda untuk setiap kotak dialog jika Anda menggunakan gaya DS_SETFONT dalam file definisi sumber daya. Fungsi MapDialogRect Windows menggunakan font yang sesuai untuk kotak dialog ini.

Fungsi MapDialogRect anggota menggantikan unit kotak dialog di lpRect dengan unit layar (piksel) sehingga persegi panjang dapat digunakan untuk membuat kotak dialog atau memosisikan kontrol dalam kotak.

CDialog::NextDlgCtrl

Memindahkan fokus ke kontrol berikutnya dalam kotak dialog.

void NextDlgCtrl() const;

Keterangan

Jika fokus berada di kontrol terakhir dalam kotak dialog, fokus akan berpindah ke kontrol pertama.

CDialog::OnCancel

Kerangka kerja memanggil metode ini ketika pengguna mengklik Batal atau menekan tombol ESC dalam kotak dialog modal atau tanpa mode.

virtual void OnCancel();

Keterangan

Ambil alih metode ini untuk melakukan tindakan (seperti memulihkan data lama) saat pengguna menutup kotak dialog dengan mengklik Batalkan atau menekan kunci ESC. Default menutup kotak dialog modal dengan memanggil EndDialog dan menyebabkan DoModal mengembalikan IDCANCEL.

Jika Anda menerapkan tombol Batal dalam kotak dialog tanpa mode, Anda harus mengambil alih OnCancel metode dan memanggil DestroyWindow di dalamnya. Jangan panggil metode kelas dasar, karena memanggil EndDialog, yang akan membuat kotak dialog tidak terlihat tetapi tidak menghancurkannya.

Catatan

Anda tidak dapat mengambil alih metode ini ketika Anda menggunakan CFileDialog objek dalam program yang dikompilasi di bawah Windows XP. Untuk informasi selengkapnya tentang CFileDialog, lihat Kelas CFileDialog.

Contoh

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OnInitDialog

Metode ini dipanggil sebagai respons terhadap WM_INITDIALOG pesan.

virtual BOOL OnInitDialog();

Tampilkan Nilai

Menentukan apakah aplikasi telah mengatur fokus input ke salah satu kontrol dalam kotak dialog. Jika OnInitDialog mengembalikan nonzero, Windows mengatur fokus input ke lokasi default, kontrol pertama dalam kotak dialog. Aplikasi dapat mengembalikan 0 hanya jika telah secara eksplisit mengatur fokus input ke salah satu kontrol dalam kotak dialog.

Keterangan

Windows mengirim WM_INITDIALOG pesan ke kotak dialog selama panggilan Buat, CreateIndirect, atau DoModal , yang terjadi segera sebelum kotak dialog ditampilkan.

Ambil alih metode ini jika Anda ingin melakukan pemrosesan khusus saat kotak dialog diinisialisasi. Dalam versi yang ditimpa, pertama-tama panggil kelas OnInitDialog dasar tetapi abaikan nilai pengembaliannya. Anda biasanya akan kembali TRUE dari metode penimpaan Anda.

Windows memanggil OnInitDialog fungsi dengan menggunakan prosedur kotak dialog global standar yang umum untuk semua kotak dialog Pustaka Kelas Microsoft Foundation. Ini tidak memanggil fungsi ini melalui peta pesan Anda, dan oleh karena itu Anda tidak memerlukan entri peta pesan untuk metode ini.

Catatan

Anda tidak dapat mengambil alih metode ini ketika Anda menggunakan CFileDialog objek dalam program yang dikompilasi di bawah Windows Vista atau sistem operasi yang lebih baru. Untuk informasi selengkapnya tentang perubahan CFileDialog pada Windows Vista dan yang lebih baru, lihat Kelas CFileDialog.

Contoh

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

Dipanggil ketika pengguna mengklik tombol OK (tombol dengan ID IDOK).

virtual void OnOK();

Keterangan

Ambil alih metode ini untuk melakukan tindakan ketika tombol OK diaktifkan. Jika kotak dialog menyertakan validasi dan pertukaran data otomatis, implementasi default metode ini memvalidasi data kotak dialog dan memperbarui variabel yang sesuai dalam aplikasi Anda.

Jika Anda menerapkan tombol OK dalam kotak dialog tanpa mode, Anda harus mengambil alih OnOK metode dan memanggil DestroyWindow di dalamnya. Jangan panggil metode kelas dasar, karena memanggil EndDialog yang membuat kotak dialog tidak terlihat tetapi tidak menghancurkannya.

Catatan

Anda tidak dapat mengambil alih metode ini ketika Anda menggunakan CFileDialog objek dalam program yang dikompilasi di bawah Windows XP. Untuk informasi selengkapnya tentang CFileDialog, lihat Kelas CFileDialog.

Contoh

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

Menentukan font yang akan digunakan kontrol kotak dialog saat menggambar teks.

Virtual void OnSetFont(CFont* pFont);

Parameter

pFont
[di] Menentukan penunjuk ke font yang akan digunakan sebagai font default untuk semua kontrol dalam kotak dialog ini.

Keterangan

Kotak dialog akan menggunakan font yang ditentukan sebagai default untuk semua kontrolnya.

Editor dialog biasanya mengatur font kotak dialog sebagai bagian dari sumber daya templat kotak dialog.

Catatan

Anda tidak dapat mengambil alih metode ini ketika Anda menggunakan CFileDialog objek dalam program yang dikompilasi di bawah Windows Vista atau sistem operasi yang lebih baru. Untuk informasi selengkapnya tentang perubahan CFileDialog pada Windows Vista dan yang lebih baru, lihat Kelas CFileDialog.

CDialog::P revDlgCtrl

Mengatur fokus ke kontrol sebelumnya dalam kotak dialog.

void PrevDlgCtrl() const;

Keterangan

Jika fokus berada pada kontrol pertama dalam kotak dialog, fokus akan berpindah ke kontrol terakhir dalam kotak.

CDialog::SetDefID

Mengubah kontrol tombol dorong default untuk kotak dialog.

void SetDefID(UINT nID);

Parameter

Nid
Menentukan ID kontrol tombol dorong yang akan menjadi default.

CDialog::SetHelpID

Mengatur ID bantuan peka konteks untuk kotak dialog.

void SetHelpID(UINT nIDR);

Parameter

nIDR
Menentukan ID bantuan sensitif konteks.

Baca juga

Sampel DLGCBR32 MFC
Sampel MFC DLGTEMPL
Kelas CWnd
Bagan Hierarki