Bagikan melalui


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.

Lihat juga

BEGIN_MSG_MAP
Gambaran Umum Kelas