Kelas CDialogImpl
Kelas ini menyediakan metode untuk membuat kotak dialog modal atau modeless.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
template <class T,
class TBase = CWindow>
class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT<TBase>
Parameter
T
Kelas Anda, berasal dari CDialogImpl
.
TBase
Kelas dasar kelas baru Anda. Kelas dasar default adalah CWindow.
Anggota
Metode
Fungsi | Deskripsi |
---|---|
Buat | Membuat kotak dialog tanpa mode. |
DestroyWindow | Menghancurkan kotak dialog tanpa mode. |
DoModal | Membuat kotak dialog modal. |
EndDialog | Menghancurkan kotak dialog modal. |
Metode CDialogImplBaseT
Fungsi | Deskripsi |
---|---|
GetDialogProc | Mengembalikan prosedur kotak dialog saat ini. |
MapDialogRect | Memetakan unit kotak dialog persegi panjang yang ditentukan ke unit layar (piksel). |
OnFinalMessage | Dipanggil setelah menerima pesan terakhir, biasanya WM_NCDESTROY. |
Fungsi Statis
Fungsi | Deskripsi |
---|---|
DialogProc | Memproses pesan yang dikirim ke kotak dialog. |
StartDialogProc | Dipanggil saat pesan pertama diterima untuk memproses pesan yang dikirim ke kotak dialog. |
Keterangan
Dengan CDialogImpl
Anda dapat membuat kotak dialog modal atau tanpa mode. CDialogImpl
menyediakan prosedur kotak dialog, yang menggunakan peta pesan default untuk mengarahkan pesan ke penangan yang sesuai.
Destruktor ~CWindowImplRoot
kelas dasar memastikan bahwa jendela hilang sebelum menghancurkan objek.
CDialogImpl
berasal dari CDialogImplBaseT
, yang pada gilirannya berasal dari CWindowImplRoot
.
Catatan
Kelas Anda harus menentukan IDD
anggota yang menentukan ID sumber daya templat dialog. Misalnya, Wizard Proyek ATL secara otomatis menambahkan baris berikut ke kelas Anda:
enum { IDD = IDD_MYDLG };
di mana MyDlg
nama Pendek dimasukkan di halaman Nama wizard.
Untuk informasi lebih lanjut tentang | Lihat |
---|---|
Membuat kontrol | ATL Tutorial |
Menggunakan kotak dialog di ATL | Kelas Jendela ATL |
Wizard Proyek ATL | Membuat Proyek ATL |
Kotak dialog | Kotak Dialog dan topik berikutnya di Windows SDK |
Persyaratan
Header: atlwin.h
CDialogImpl::Create
Membuat kotak dialog tanpa mode.
HWND Create(
HWND hWndParent,
LPARAM dwInitParam = NULL );
HWND Create(
HWND hWndParent,
RECT&,
LPARAM dwInitParam = NULL);
Parameter
hWndParent
[di] Handel ke jendela pemilik.
RECT& rect [in] Struktur RECT yang menentukan ukuran dan posisi dialog.
dwInitParam
[di] Menentukan nilai yang akan diteruskan ke kotak dialog dalam parameter lParam dari pesan WM_INITDIALOG.
Tampilkan Nilai
Handel ke kotak dialog yang baru dibuat.
Keterangan
Kotak dialog ini secara otomatis dilampirkan ke CDialogImpl
objek. Untuk membuat kotak dialog modal, panggil DoModal. Penimpaan kedua di atas hanya digunakan dengan CComControl.
CDialogImpl::D estroyWindow
Menghancurkan kotak dialog tanpa mode.
BOOL DestroyWindow();
Tampilkan Nilai
TRUE jika kotak dialog berhasil dihancurkan; jika tidak FALSE.
Keterangan
Mengembalikan TRUE jika kotak dialog berhasil dihancurkan; jika tidak FALSE.
CDialogImpl::D ialogProc
Fungsi statis ini mengimplementasikan prosedur kotak dialog.
static LRESULT CALLBACK DialogProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
Parameter
hWnd
[di] Handel ke kotak dialog.
uMsg
[di] Pesan yang dikirim ke kotak dialog.
wParam
[di] Informasi khusus pesan tambahan.
lParam
[di] Informasi khusus pesan tambahan.
Tampilkan Nilai
TRUE jika pesan diproses; jika tidak, FALSE.
Keterangan
DialogProc
menggunakan peta pesan default untuk mengarahkan pesan ke handler yang sesuai.
Anda dapat mengambil alih DialogProc
untuk menyediakan mekanisme yang berbeda untuk menangani pesan.
CDialogImpl::D oModal
Membuat kotak dialog modal.
INT_PTR DoModal(
HWND hWndParent = ::GetActiveWindow(),
LPARAM dwInitParam = NULL);
Parameter
hWndParent
[di] Handel ke jendela pemilik. Nilai default adalah nilai pengembalian fungsi GetActiveWindow Win32.
dwInitParam
[di] Menentukan nilai yang akan diteruskan ke kotak dialog dalam parameter lParam dari pesan WM_INITDIALOG.
Tampilkan Nilai
Jika berhasil, nilai parameter nRetCode yang ditentukan dalam panggilan ke EndDialog. Jika tidak, -1.
Keterangan
Kotak dialog ini secara otomatis dilampirkan ke CDialogImpl
objek.
Untuk membuat kotak dialog tanpa mode, panggil Buat.
CDialogImpl::EndDialog
Menghancurkan kotak dialog modal.
BOOL EndDialog(int nRetCode);
Parameter
nRetCode
[di] Nilai yang akan dikembalikan oleh CDialogImpl::D oModal.
Tampilkan Nilai
TRUE jika kotak dialog dihancurkan; jika tidak, FALSE.
Keterangan
EndDialog
harus dipanggil melalui prosedur dialog. Setelah kotak dialog dihancurkan, Windows menggunakan nilai nRetCode sebagai nilai pengembalian untuk DoModal
, yang membuat kotak dialog.
Catatan
Jangan panggil EndDialog
untuk menghancurkan kotak dialog tanpa mode. Panggil CWindow::D estroyWindow sebagai gantinya.
CDialogImpl::GetDialogProc
Mengembalikan DialogProc
, prosedur kotak dialog saat ini.
virtual WNDPROC GetDialogProc();
Tampilkan Nilai
Prosedur kotak dialog saat ini.
Keterangan
Ambil alih metode ini untuk mengganti prosedur dialog dengan prosedur Anda sendiri.
CDialogImpl::MapDialogRect
Mengonversi (peta) unit kotak dialog dari persegi panjang yang ditentukan ke unit layar (piksel).
BOOL MapDialogRect(LPRECT lpRect);
Parameter
lpRect
Menunjuk ke CRect
objek atau struktur RECT yaitu menerima koordinat klien dari pembaruan yang mencakup wilayah pembaruan.
Tampilkan Nilai
Nonzero jika pembaruan berhasil; 0 jika pembaruan gagal. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError
.
Keterangan
Fungsi menggantikan koordinat dalam struktur yang ditentukan RECT
dengan koordinat yang dikonversi, yang memungkinkan struktur digunakan untuk membuat kotak dialog atau memosisikan kontrol dalam kotak dialog.
CDialogImpl::OnFinalMessage
Dipanggil setelah menerima pesan terakhir (biasanya WM_NCDESTROY
).
virtual void OnFinalMessage(HWND hWnd);
Parameter
hWnd
[di] Handel ke jendela sedang dihancurkan.
Keterangan
Perhatikan bahwa jika Anda ingin menghapus objek Anda secara otomatis saat penghancuran jendela, Anda dapat memanggil hapus ini; di sini.
CDialogImpl::StartDialogProc
Hanya dipanggil sekali, ketika pesan pertama diterima, untuk memproses pesan yang dikirim ke kotak dialog.
static LRESULT CALLBACK StartDialogProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
Parameter
hWnd
[di] Handel ke kotak dialog.
uMsg
[di] Pesan yang dikirim ke kotak dialog.
wParam
[di] Informasi khusus pesan tambahan.
lParam
[di] Informasi khusus pesan tambahan.
Tampilkan Nilai
Prosedur jendela.
Keterangan
Setelah panggilan awal ke StartDialogProc
, DialogProc
diatur sebagai prosedur dialog, dan panggilan lebih lanjut masuk ke sana.