Bagikan melalui


Menerapkan Kotak Dialog

Ada dua cara untuk menambahkan kotak dialog ke proyek ATL Anda: gunakan Wizard Dialog ATL atau tambahkan secara manual.

Menambahkan Kotak Dialog dengan Panduan Dialog ATL

Dalam kotak dialog Tambahkan Kelas, pilih objek Dialog ATL untuk menambahkan kotak dialog ke proyek ATL Anda. Isi Wizard Dialog ATL yang sesuai dan klik Selesai. Wizard menambahkan kelas yang berasal dari CAxDialogImpl ke proyek Anda. Buka Tampilan Sumber Daya dari menu Tampilan , temukan dialog Anda, dan klik dua kali untuk membukanya di editor sumber daya.

Catatan

Jika kotak dialog Anda berasal dari CAxDialogImpl, kotak dialog dapat menghosting kontrol ActiveX dan Windows. Jika Anda tidak ingin overhead dukungan kontrol ActiveX di kelas kotak dialog Anda, gunakan CSimpleDialog atau CDialogImpl sebagai gantinya.

Penangan pesan dan peristiwa dapat ditambahkan ke kelas dialog Anda dari Tampilan Kelas. Untuk informasi selengkapnya, lihat Menambahkan Handler Pesan ATL.

Menambahkan Kotak Dialog Secara Manual

Menerapkan kotak dialog mirip dengan menerapkan jendela. Anda mendapatkan kelas dari CAxDialogImpl, CDialogImpl, atau CSimpleDialog dan mendeklarasikan peta pesan untuk menangani pesan. Namun, Anda juga harus menentukan ID sumber daya templat dialog di kelas turunan Anda. Kelas Anda harus memiliki anggota data yang dipanggil IDD untuk menyimpan nilai ini.

Catatan

Saat Anda membuat kotak dialog menggunakan Wizard Dialog ATL, wizard secara otomatis menambahkan IDD anggota sebagai enum tipe.

CDialogImpl memungkinkan Anda menerapkan kotak dialog modal atau tanpa mode yang menghosting kontrol Windows. CAxDialogImpl memungkinkan Anda menerapkan kotak dialog modal atau modeless yang menghosting kontrol ActiveX dan Windows.

Untuk membuat kotak dialog modal, buat instans kelas -turunan (atau CAxDialogImpl-turunan) Anda CDialogImpllalu panggil metode DoModal. Untuk menutup kotak dialog modal, panggil metode EndDialog dari handler pesan. Untuk membuat kotak dialog tanpa mode, panggil metode Buat alih-alih DoModal. Untuk menghancurkan kotak dialog tanpa mode, panggil DestroyWindow.

Peristiwa tenggelam secara otomatis dilakukan di CAxDialogImpl. Terapkan penanganan pesan kotak dialog seperti yang Anda lakukan pada handler di CWindowImplkelas -turunan. Jika ada nilai pengembalian khusus pesan, kembalikan sebagai LRESULT. Nilai yang dikembalikan dipetakan LRESULT oleh ATL untuk penanganan yang tepat oleh manajer dialog Windows. Untuk detailnya, lihat kode sumber untuk CDialogImplBaseT::D ialogProc di atlwin.h.

Contoh

Kelas berikut mengimplementasikan kotak dialog:

class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
   enum { IDD = IDD_MYDLG };

   BEGIN_MSG_MAP(CMyDialog)
      MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
      COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel)
   END_MSG_MAP()

   LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      // Do some initialization code
      return 1;
   }
public:
   LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};

Lihat juga

Kelas Jendela