Bagikan melalui


Mengkustomisasi Kotak Dialog Umum

Anda bisa menggunakan kotak dialog umum dalam formulir standarnya, atau Anda bisa mengkustomisasinya. Dari perspektif pengguna, manfaat utama dari kotak dialog umum adalah penampilan dan fungsionalitasnya yang konsisten dari aplikasi ke aplikasi. Oleh karena itu, penting bagi Anda untuk menyesuaikan kotak dialog umum hanya ketika benar-benar diperlukan untuk aplikasi. Jika tidak, tampilan yang konsisten dan antarmuka pengkodian sederhana akan hilang. Penyesuaian yang sesuai membuat kontrol asli sebanyak mungkin utuh. Meningkatkan ukuran kotak dialog atau menambahkan kontrol baru dalam ruang yang sudah tersedia dalam kotak dialog adalah kustomisasi yang sesuai. Menyembunyikan kontrol asli atau mengubah fungsionalitas yang dimaksudkan dari kontrol asli adalah penyesuaian yang kurang sesuai.

Bagian ini membahas metode berikut untuk menyesuaikan kotak dialog umum:

Templat Kustom

Kotak dialog umum memiliki templat default yang menentukan jumlah, jenis, dan posisi kontrol standar dalam kotak dialog. Anda dapat menentukan templat kustom untuk memberi pengguna akses ke kontrol tambahan yang unik untuk aplikasi Anda.

Untuk semua kotak dialog umum kecuali kotak dialog Buka dan Simpan Sebagai gaya Explorer, Anda mengubah templat default untuk membuat templat kustom yang menggantikan templat default. Templat kustom menentukan jenis dan posisi kontrol standar serta kontrol tambahan apa pun.

Saat Anda membuat templat kotak dialog kustom dengan memodifikasi templat kotak dialog default, pastikan pengidentifikasi untuk kontrol yang ditambahkan unik dan tidak bertentangan dengan pengidentifikasi kontrol standar. Tabel berikut ini mencantumkan nama file templat default dan menyertakan file untuk setiap jenis kotak dialog umum.

Tipe kotak dialog File templat Menyertakan file
Warna Color.dlg ColorDlg.h
Cari Findtext.dlg Dlgs.h
Font Font.dlg Dlgs.h
Buka (beberapa pilihan) Fileopen.dlg Dlgs.h
Buka (pilihan tunggal) Fileopen.dlg Dlgs.h
Penyetelan Halaman Prnsetup.dlg Dlgs.h
Cetak Prnsetup.dlg Dlgs.h
Penyetelan Cetak (usang) Prnsetup.dlg Dlgs.h
Replace Findtext.dlg Dlgs.h

Untuk mengaktifkan templat kustom, Anda harus mengatur bendera di anggota Bendera dari struktur terkait untuk kotak dialog. Jika templat adalah sumber daya dalam aplikasi atau pustaka tautan dinamis, atur bendera ENABLETEMPLATE di anggota Bendera , dan gunakan anggota hInstance dan lpTemplateName dari struktur untuk mengidentifikasi modul dan nama sumber daya. Jika templat sudah dalam memori, atur bendera ENABLETEMPLATEHANDLE di anggota Bendera , dan gunakan anggota hInstance untuk mengidentifikasi objek memori yang berisi templat.

Dalam kebanyakan kasus, Anda juga harus mengaktifkan prosedur kait untuk kotak dialog guna mendukung dan memproses input untuk kontrol tambahan di templat kustom Anda.

Untuk kotak dialog Buka dan Simpan Sebagai gaya Explorer, templat default tidak tersedia untuk modifikasi. Sebaliknya, templat kustom Anda menentukan kotak dialog anak yang hanya menyertakan item yang akan ditambahkan ke kotak dialog standar. Templat kustom juga dapat menentukan kontrol statis yang menentukan lokasi kluster kontrol standar dalam kotak dialog anak. Untuk informasi selengkapnya, lihat Templat Kustom Gaya Penjelajah.

Prosedur Kait untuk Kotak Dialog Umum

Untuk setiap kotak dialog umum, Anda dapat mengaktifkan prosedur kait untuk memproses pesan dari prosedur kotak dialog default. Ada dua jenis umum prosedur kait dialog umum:

  • Prosedur kait standar yang digunakan dengan kotak dialog yang paling umum
  • Prosedur kait gaya Explorer didukung oleh kotak dialog Buka dan Simpan Sebagai

Saat Anda menyediakan prosedur kait standar untuk salah satu kotak dialog umum, prosedur kotak dialog default menangani pesannya sebagai berikut.

Pesan Penanganan
WM_INITDIALOG Prosedur kotak dialog default memproses pesan sebelum meneruskannya ke prosedur kait. Parameter lParam pesan adalah penunjuk ke struktur inisialisasi yang ditentukan saat dialog dibuat.
Semua pesan lainnya Prosedur kait menerima pesan terlebih dahulu. Kemudian, nilai pengembalian prosedur kait menentukan apakah prosedur dialog default memproses pesan atau mengabaikannya.

Untuk kotak dialog Buka dan Simpan Sebagai gaya Explorer, prosedur hook tidak menerima pesan yang ditujukan untuk kontrol standar dalam kotak dialog. Sebaliknya, ia menerima pesan pemberitahuan dari kotak dialog dan pesan untuk kontrol tambahan apa pun yang Anda tentukan dalam templat kustom. Untuk informasi selengkapnya, lihat Prosedur Hook Gaya Penjelajah.

Untuk mengaktifkan prosedur kait, atur nilai ENABLEHOOK di anggota Bendera struktur terkait untuk kotak dialog. Jika bendera ENABLEHOOK diatur, anggota lpfnHook dari struktur harus menentukan alamat prosedur kait.

Tabel berikut ini memperlihatkan jenis prosedur kait yang akan disediakan untuk setiap kotak dialog umum.

Tipe kotak dialog Prosedur kait
Warna CCHookProc
Temukan atau Ganti FRHookProc
Font CFHookProc
Buka atau Simpan Sebagai (Gaya penjelajah) OFNHookProc
Buka atau Simpan Sebagai (Gaya lama) OFNHookProcOldStyle
Cetak PrintHookProc
Penyetelan Halaman PageSetupHook

Untuk kotak dialog Penyetelan Halaman , Anda juga bisa menentukan prosedur hook PagePaintHook . Ini adalah prosedur kait khusus yang bisa Anda gunakan untuk mengkustomisasi tampilan halaman sampel yang ditampilkan oleh kotak dialog Penyetelan Halaman .

Catatan

Kotak dialog Penyetelan Cetak telah digantikan oleh kotak dialog Penyetelan Halaman . Aplikasi harus menggunakan kotak dialog Penyetelan Halaman . Namun, untuk kompatibilitas, fungsi PrintDlg terus mendukung tampilan kotak dialog Penyetelan Cetak . Anda dapat menyediakan prosedur hook SetupHookProc untuk kotak dialog Penyetelan Cetak .

Pesan Dialog Umum

Kotak dialog umum menggunakan pesan untuk memberi tahu prosedur jendela atau prosedur kait Anda saat peristiwa tertentu terjadi. Selain itu, ada pesan yang bisa Anda kirim ke kotak dialog umum untuk mengambil informasi atau mengontrol perilaku atau tampilan kotak dialog. Bagian ini menjelaskan pesan dialog umum yang didaftarkan oleh fungsi RegisterWindowMessage , pesan yang digunakan oleh kotak dialog Font dan kotak dialog Penyetelan Halaman , dan pesan yang digunakan oleh kotak dialog Buka dan Simpan Sebagai Gaya Penjelajah.

Pustaka Kotak Dialog Umum menentukan sekumpulan string pesan. Anda dapat meneruskan konstanta yang terkait dengan salah satu string pesan ini ke RegisterWindowMessage untuk mendapatkan pengidentifikasi pesan. Anda kemudian dapat menggunakan pengidentifikasi untuk mendeteksi dan memproses pesan yang dikirim dari kotak dialog umum, atau untuk mengirim pesan ke kotak dialog umum. Tabel berikut ini memperlihatkan konstanta pesan dan menjelaskan penggunaannya.

Kontan Penggunaan
COLOROKSTRING Kotak dialog Warna mengirimkan pesan ini ke prosedur kait ketika pengguna memilih warna dan mengklik tombol OK . Prosedur kait dapat menerima warna, atau menolaknya dan memaksa kotak dialog untuk tetap terbuka.
FILEOKSTRING Kotak dialog Buka atau Simpan Sebagai mengirimkan pesan ini ke prosedur kait saat pengguna memilih nama file dan mengklik tombol OK . Prosedur kait dapat menerima nama file, atau menolaknya dan memaksa kotak dialog untuk tetap terbuka. Untuk kotak dialog Buka dan Simpan Sebagai Gaya Explorer, pesan ini telah digantikan oleh pesan pemberitahuan CDN_FILEOK .
FINDMSGSTRING Kotak dialog Temukan atau Ganti mengirimkan pesan ini ke prosedur jendela jendela induknya ketika pengguna mengklik kotak dialog Temukan Berikutnya, Ganti, atau Ganti Semua, atau menutup kotak dialog. Parameter lParam pesan adalah penunjuk ke struktur FINDREPLACE yang berisi input pengguna.
HELPMSGSTRING Semua kotak dialog umum mengirim pesan ini ke prosedur jendela jendela induk mereka ketika pengguna mengklik tombol Bantuan . Untuk kotak dialog Buka dan Simpan Sebagai gaya Explorer, pesan ini telah digantikan oleh pesan pemberitahuan CDN_HELP .
LBSELCHSTRING Kotak dialog Buka atau Simpan Sebagai mengirimkan pesan ini ke prosedur kait saat pengguna mengubah pilihan dalam kotak daftar Nama File . Untuk kotak dialog Buka dan Simpan Sebagai gaya Explorer, pesan ini telah digantikan oleh pesan pemberitahuan CDN_SELCHANGE .
SETRGBSTRING Prosedur kait dapat mengirim pesan ini ke kotak dialog Warna untuk mengatur pilihan warna saat ini.
SHAREVISTRING Kotak dialog Buka atau Simpan Sebagai mengirimkan pesan ini ke prosedur kait jika pelanggaran berbagi terjadi untuk file yang dipilih saat pengguna mengklik tombol OK . Untuk kotak dialog Buka dan Simpan Sebagai gaya Explorer, pesan ini telah digantikan oleh pesan pemberitahuan CDN_SHAREVIOLATION .

Beberapa kotak dialog umum mengirim dan menerima pesan jendela lainnya. Prosedur kait untuk kotak dialog Font bisa mengirim salah satu pesan WM_CHOOSEFONT_* ke kotak dialog Font . Untuk informasi selengkapnya, lihat Kotak Dialog Font. Kotak dialog Penyetelan Halaman mengirimkan pesan WM_PSD_* jika Anda telah mengaktifkan prosedur hook PagePaintHook . Untuk informasi selengkapnya, lihat Kotak Dialog Penyetelan Halaman.

Kotak dialog Buka dan Simpan Sebagai gaya Explorer mendukung sekumpulan pesan yang telah ditentukan sebelumnya. Ini termasuk pesan pemberitahuan yang dikirim dalam bentuk pesan WM_NOTIFY ke prosedur kait Anda, dan pesan yang dapat dikirim prosedur hook Anda ke kotak dialog. Untuk daftar lengkap pesan ini, lihat Prosedur Hook Gaya Penjelajah.

Dukungan Bantuan

Kotak dialog umum menyediakan bantuan peka konteks untuk kontrol standar kotak dialog. Untuk memberikan bantuan tambahan untuk kotak dialog umum, Anda bisa menampilkan tombol Bantuan dan memproses pesan yang dihasilkan saat pengguna mengklik tombol. Tombol Bantuan adalah suplemen untuk bantuan sensitif konteks default. Tombol Bantuan berguna untuk menjelaskan tujuan umum kotak dialog karena berlaku untuk aplikasi Anda.

Bantuan Context-Sensitive

Semua kotak dialog umum menyediakan bantuan sensitif konteks untuk kontrol standar kotak dialog. Pengguna dapat menampilkan bantuan untuk kontrol individual dengan salah satu metode berikut:

  • Memilih kontrol dan menekan tombol F1.
  • Mengklik tombol ? di bilah judul dan kemudian mengklik kontrol.
  • Mengklik tombol kanan mouse di atas kontrol.

Jika Anda mengkustomisasi kotak dialog dengan menambahkan kontrol baru, Anda juga harus memperluas dukungan bantuan untuk kontrol ini dengan memproses permintaan bantuan dalam prosedur kait. Prosedur kait menerima pesan berikut saat pengguna meminta bantuan.

Tindakan pengguna Pesan
Klik tombol kanan mouse di atas kontrol. WM_CONTEXTMENU
Menekan tombol F1. WM_HELP
Mengklik tombol ? pada bilah judul lalu mengklik kontrol. WM_HELP

Anda harus memproses pesan ini untuk kontrol yang telah Anda tambahkan, tetapi biarkan prosedur kotak dialog default memproses pesan untuk kontrol standar. Untuk informasi selengkapnya tentang cara memproses pesan ini, lihat Bantuan.

Tombol Bantuan

Anda bisa menampilkan tombol Bantuan dalam salah satu kotak dialog umum dengan mengatur nilai SHOWHELP di anggota Bendera struktur inisialisasi untuk kotak dialog. Jika Anda menampilkan tombol Bantuan , Anda harus memproses permintaan bantuan pengguna. Pemrosesan dapat dilakukan baik di salah satu prosedur jendela aplikasi Anda atau dalam prosedur kait untuk kotak dialog. Biasanya, Anda akan memproses permintaan bantuan dengan memanggil fungsi WinHelp .

Untuk memproses pesan bantuan di salah satu prosedur jendela, Anda harus mendapatkan pengidentifikasi pesan untuk string yang ditentukan oleh nilai HELPMSGSTRING dan mengidentifikasi jendela untuk menerima pesan. Untuk mendapatkan pengidentifikasi pesan, tentukan HELPMSGSTRING sebagai parameter dalam panggilan ke fungsi RegisterWindowMessage . Saat Anda membuat kotak dialog, gunakan anggota hwndOwner dari struktur inisialisasi kotak dialog untuk mengidentifikasi jendela yang akan menerima pesan. Prosedur kotak dialog mengirim pesan ke prosedur jendela setiap kali pengguna mengklik tombol Bantuan .

Untuk memproses pesan bantuan dalam prosedur kait, Anda harus memproses pesan WM_COMMAND . Prosedur kait menyediakan bantuan jika parameter wParam pesan ini menunjukkan bahwa pengguna mengklik tombol Bantuan . Pengidentifikasi tombol Bantuan adalah konstanta pshHelp yang ditentukan dalam file Dlgs.h.

Prosedur kait untuk kotak dialog Buka dan Simpan Sebagai Gaya Penjelajah tidak menerima pesan WM_COMMAND untuk tombol Bantuan . Sebagai gantinya, kotak dialog mengirim pesan pemberitahuan CDN_HELP ke prosedur kait saat tombol Bantuan diklik.