Bagikan melalui


Temukan dan Ganti Kotak Dialog

Menampilkan kotak dialog tanpa mode yang memungkinkan pengguna menentukan string yang akan dicari, serta opsi untuk digunakan saat mencari teks dalam dokumen. Kotak dialog Ganti memungkinkan pengguna menentukan string untuk dicari dan string pengganti, serta opsi untuk mengontrol operasi.

Anda membuat dan menampilkan kotak dialog Temukan dengan menginisialisasi struktur FINDREPLACE dan meneruskan struktur ke fungsi FindText . Ilustrasi berikut ini memperlihatkan kotak dialog Temukan umum.

kotak dialog temukan

Anda membuat dan menampilkan kotak dialog Ganti dengan menginisialisasi struktur FINDREPLACE dan meneruskan struktur ke fungsi ReplaceText . Ilustrasi berikut ini memperlihatkan kotak dialog Ganti yang khas.

ganti kotak dialog

Tidak seperti kotak dialog umum lainnya, kotak dialog Temukan dan Ganti tidak memiliki mode. Kotak dialog tanpa mode memungkinkan pengguna beralih antara kotak dialog dan jendela yang membuatnya. Ini berguna untuk memungkinkan pengguna mencari string, beralih ke jendela aplikasi untuk mengerjakan string, dan beralih kembali ke kotak dialog untuk mencari string lain tanpa mengulangi perintah yang diperlukan untuk membuka kotak dialog.

Jika fungsi FindText atau ReplaceText berhasil membuat kotak dialog, fungsi mengembalikan handel ke kotak dialog. Anda dapat menggunakan handel ini untuk memindahkan dan berkomunikasi dengan kotak dialog. Jika fungsi tidak dapat membuat kotak dialog, fungsi mengembalikan NULL. Anda dapat menentukan penyebab kesalahan dengan memanggil fungsi CommDlgExtendedError untuk mengambil nilai kesalahan yang diperluas.

Bagian ini membahas topik berikut.

Pesan Terdaftar FINDMSGSTRING

Sebelum membuat kotak dialog Temukan atau Ganti , Anda harus memanggil fungsi RegisterWindowMessage untuk mendapatkan pengidentifikasi pesan untuk pesan terdaftar FINDMSGSTRING . Anda kemudian dapat menggunakan pengidentifikasi untuk mendeteksi dan memproses pesan yang dikirim dari kotak dialog. Saat pengguna mengklik tombol Temukan Berikutnya, Ganti, atau Ganti Semua dalam kotak dialog, prosedur kotak dialog mengirimkan pesan FINDMSGSTRING ke prosedur jendela jendela jendela pemilik. Saat Anda membuat kotak dialog, anggota hwndOwner dari struktur FINDREPLACE mengidentifikasi jendela pemilik.

Parameter lParam dari pesan FINDMSGSTRING adalah penunjuk ke struktur FINDREPLACE yang Anda tentukan saat membuat kotak dialog. Sebelum mengirim pesan, kotak dialog mengatur anggota struktur ini dengan input pengguna terbaru, termasuk string yang akan dicari, string pengganti (jika ada), dan opsi untuk operasi temukan dan ganti.

Dalam pesan FINDMSGSTRING , anggota Bendera struktur FINDREPLACE menyertakan salah satu bendera berikut untuk menunjukkan peristiwa yang menyebabkan pesan.

Bendera Makna
FR_DIALOGTERM Kotak dialog ditutup. Setelah jendela pemilik memproses pesan ini, handel ke kotak dialog tidak lagi valid.
FR_FINDNEXT Pengguna mengklik tombol Temukan Berikutnya dalam kotak dialog Temukan atau Ganti . Anggota lpstrFindWhat menentukan string yang akan dicari.
FR_REPLACE Pengguna mengklik tombol Ganti dalam kotak dialog Ganti . Anggota lpstrFindWhat menentukan string untuk diganti dan anggota lpstrReplaceWith menentukan string pengganti.
FR_REPLACEALL Pengguna mengklik tombol Ganti Semua dalam kotak dialog Ganti . Anggota lpstrFindWhat menentukan string untuk diganti dan anggota lpstrReplaceWith menentukan string pengganti.

 

Untuk pesan Temukan Berikutnya atau Ganti Semua , anggota Bendera dapat menyertakan kombinasi bendera berikut untuk menunjukkan opsi pencarian.

Bendera Makna
FR_DOWN Jika diatur, tombol Turun tombol radio arah dipilih, menunjukkan bahwa pengguna ingin mencari dari lokasi saat ini ke akhir dokumen. Jika FR_DOWN tidak diatur, tombol Naik dipilih sehingga pengguna ingin mencari ke awal dokumen.
FR_MATCHCASE Jika diatur, kotak centang Cocokkan Kasus dipilih, menunjukkan bahwa pengguna ingin pencarian peka huruf besar/kecil. Jika FR_MATCHCASE tidak diatur, kotak centang tidak dipilih sehingga pencarian bisa tidak peka huruf besar/kecil.
FR_WHOLEWORD Jika diatur, kotak centang Cocokkan Seluruh Word Saja dipilih, menunjukkan bahwa pengguna hanya ingin mencari seluruh kata yang cocok dengan string pencarian. Jika FR_WHOLEWORD tidak diatur, kotak centang tidak dipilih sehingga Anda juga harus mencari fragmen kata yang cocok dengan string pencarian.

 

Mengkustomisasi Kotak Dialog Temukan atau Ganti

Untuk mengkustomisasi kotak dialog Temukan atau Ganti , Anda bisa menggunakan salah satu metode berikut ini:

  • Tentukan nilai dalam struktur FINDREPLACE saat Anda membuat kotak dialog
  • Menyediakan templat kustom
  • Menyediakan prosedur kait

Saat Anda membuat kotak dialog Temukan atau Ganti , Anda bisa mengatur bendera di anggota Bendera struktur FINDREPLACE untuk menyembunyikan atau menonaktifkan salah satu kontrol opsi pencarian. Misalnya, Anda dapat mengatur bendera FR_NOMATCHCASE untuk menonaktifkan kotak centang Cocokkan Kasus atau mengatur bendera FR_HIDEMATCHCASE untuk menyembunyikannya.

Anda dapat menyediakan templat kustom untuk kotak dialog Temukan atau Ganti , misalnya, jika Anda ingin menyertakan kontrol tambahan yang unik untuk aplikasi Anda. Fungsi FindText dan ReplaceText menggunakan templat kustom Anda sebagai pengganti templat default.

Untuk menyediakan templat kustom untuk kotak dialog Temukan atau Ganti

  1. Buat templat kustom dengan memodifikasi templat default yang ditentukan dalam file Findtext.dlg. Pengidentifikasi kontrol yang digunakan dalam templat dialog Temukan atau Ganti default ditentukan dalam file Dlgs.h.
  2. Gunakan struktur FINDREPLACE untuk mengaktifkan templat sebagai berikut:
      • Jika templat kustom Anda adalah sumber daya dalam aplikasi atau pustaka tautan dinamis, atur bendera FR_ENABLETEMPLATE di anggota Bendera . Gunakan anggota hInstance dan lpTemplateName dari struktur untuk mengidentifikasi modul dan nama sumber daya.

        -Atau-

      • Jika templat kustom Anda sudah dalam memori, atur bendera FR_ENABLETEMPLATEHANDLE. Gunakan anggota hInstance untuk mengidentifikasi objek memori yang berisi templat.

Anda dapat menyediakan prosedur hook FRHookProc untuk kotak dialog Temukan atau Ganti . Prosedur kait dapat memproses pesan yang dikirim ke kotak dialog. Jika Anda menggunakan templat kustom untuk menentukan kontrol tambahan, Anda harus menyediakan prosedur kait untuk memproses input untuk kontrol Anda.

Untuk mengaktifkan prosedur hook untuk kotak dialog Temukan atau Ganti

  1. Atur bendera FR_ENABLEHOOK di anggota Bendera struktur FINDREPLACE .
  2. Tentukan alamat prosedur kait di anggota lpfnHook .

Setelah memproses pesan WM_INITDIALOG , prosedur kotak dialog mengirimkan pesan WM_INITDIALOG ke prosedur kait. Parameter lParam pesan ini adalah penunjuk ke struktur FINDREPLACE yang digunakan untuk menginisialisasi kotak dialog.

Jika prosedur kait mengembalikan FALSE sebagai respons terhadap pesan WM_INITDIALOG , kotak dialog tidak akan ditampilkan kecuali prosedur kait menampilkannya. Untuk melakukan ini, pertama-tama lakukan operasi cat lainnya, lalu panggil fungsi ShowWindow dan UpdateWindow . Kode berikut memberikan contoh:

// We've returned FALSE in response to WM_INITDIALOG. 
// We've performed any other paint operations. 
// Now we display the dialog box. 
ShowWindow(hDlg, SW_SHOWNORMAL); 
UpdateWindow(hDlg);