Bagikan melalui


Menyesuaikan Kotak Dialog Umum

Anda dapat menggunakan kotak dialog umum dalam formulir standarnya, atau Anda dapat menyesuaikannya. 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 pengodian sederhana akan hilang. Penyesuaian yang sesuai membiarkan kontrol-kontrol asli tetap utuh sebanyak mungkin. Meningkatkan ukuran kotak dialog atau menambahkan kontrol baru di 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 bergaya Explorer dan Simpan Sebagai, Anda mengubah templat default untuk membuat templat kustom yang menggantikan templat default. Templat kustom mendefinisikan 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 Lampirkan file
Warna Color.dlg ColorDlg.h
Temukan CariTeks.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
Pengaturan Cetak (usang) Prnsetup.dlg Dlgs.h
Ganti Findtext.dlg Dlgs.h

Untuk mengaktifkan templat kustom, Anda harus mengatur tanda di anggota "Flags" dari struktur yang sesuai untuk kotak dialog. Jika templat adalah sumber daya dalam aplikasi atau pustaka tautan dinamis, atur ENABLETEMPLATE di anggota Bendera, dan gunakan anggota struktur hInstance dan lpTemplateName 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 untuk mendukung dan memproses input untuk kontrol tambahan di templat kustom Anda.

Pada kotak dialog gaya Explorer Buka dan Simpan Sebagai, templat default tidak tersedia untuk modifikasi. Sebagai gantinya, 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 Explorer-Style.

Prosedur Pengait 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 prosedur kait dialog umum.

  • Prosedur 'hook' 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 dari pesan adalah penunjuk ke struktur inisialisasi yang ditentukan saat dialog tersebut 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 gaya Penjelajah Buka dan Simpan Sebagai, prosedur pengait tidak menerima pesan yang dimaksudkan untuk kontrol standar dalam kotak dialog. Sebagai gantinya, 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 Explorer-Style.

Untuk mengaktifkan prosedur kait, atur ENABLEHOOK sebagai nilai di parameter Flags anggota struktur yang sesuai untuk kotak dialog. Jika flag ENABLEHOOK diatur, anggota struktur lpfnHook harus menentukan alamat prosedur kait.

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

Tipe kotak dialog Prosedur pengait
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 hookPagePaintHook. Ini adalah prosedur kait khusus yang dapat Anda gunakan untuk mengkustomisasi tampilan halaman sampel yang ditampilkan oleh kotak dialog Penyetelan Halaman.

Nota

Kotak dialog Penyetelan Cetak telah digantikan oleh kotak dialog Penyetelan Halaman. Aplikasi harus menggunakan kotak dialog Penyetelan Halaman. Namun, untuk kompatibilitas, fungsi PrintDlg ini 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 dapat Anda kirim ke kotak dialog umum untuk mengambil informasi atau untuk 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 Pengaturan Halaman, dan pesan yang digunakan oleh kotak dialog gaya Penjelajah Buka dan Simpan Sebagai.

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 Pakai
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 hook 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 gaya Explorer dan Simpan Sebagai, pesan ini telah digantikan oleh pesan pemberitahuan CDN_FILEOK.
FINDMSGSTRING Kotak dialog Temukan atau Ganti mengirim pesan ini ke prosedur jendela jendela induknya saat pengguna mengklik TemukanBerikutnya, Ganti, atau Ganti Semua, atau menutup kotak dialog. Parameter lParam pesan adalah penunjuk ke strukturFINDREPLACEyang berisi input pengguna.
PESANBANTUAN 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, 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 gaya Explorer Buka dan Simpan Sebagai , 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 akan mengirimkan pesan ini ke prosedur pengait jika terjadi pelanggaran berbagi pada file yang dipilih ketika pengguna mengklik tombol OK. Kotak dialog gaya Explorer Buka dan Simpan Sebagai, pesan ini telah digantikan oleh pesan notifikasi CDN_SHAREVIOLATION.

Beberapa kotak dialog umum mengirim dan menerima pesan jendela lainnya. Prosedur hook untuk kotak dialog Font dapat mengirim 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 hookPagePaintHook. Untuk informasi selengkapnya, lihat Kotak Dialog Penyetelan Halaman .

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

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 tambahan untuk bantuan kontekstual default. Tombol Bantuan berguna untuk menjelaskan tujuan umum kotak dialog seperti yang 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
Klik tombol ? pada bilah judul lalu klik kontrol tersebut. 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 di salah satu kotak dialog umum dengan mengatur nilai SHOWHELP di anggota Flags dari 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 fungsiWinHelp.

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

Untuk memproses pesan bantuan dalam prosedur hook, perlu memproses pesan WM_COMMAND. Prosedur kait menyediakan bantuan jika parameter wParam dari 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 gaya Explorer Buka dan Simpan Sebagai tidak menerima pesan WM_COMMAND untuk tombol Bantuan. Sebagai gantinya, kotak dialog mengirimkan pesan pemberitahuan CDN_HELP ke prosedur kait ketika tombol Bantuan diklik.