Bagikan melalui


Kelas CFindReplaceDialog

Memungkinkan Anda menerapkan kotak dialog Temukan/Ganti string standar di aplikasi Anda.

Sintaks

class CFindReplaceDialog : public CCommonDialog

Anggota

Konstruktor Publik

Nama Deskripsi
CFindReplaceDialog::CFindReplaceDialog Panggil fungsi ini untuk membuat CFindReplaceDialog objek.

Metode Publik

Nama Deskripsi
CFindReplaceDialog::Create Membuat dan menampilkan CFindReplaceDialog kotak dialog.
CFindReplaceDialog::FindNext Panggil fungsi ini untuk menentukan apakah pengguna ingin menemukan kemunculan berikutnya dari string temukan.
CFindReplaceDialog::GetFindString Panggil fungsi ini untuk mengambil string temuan saat ini.
CFindReplaceDialog::GetNotifier Panggil fungsi ini untuk mengambil FINDREPLACE struktur di handler pesan terdaftar Anda.
CFindReplaceDialog::GetReplaceString Panggil fungsi ini untuk mengambil string pengganti saat ini.
CFindReplaceDialog::IsTerminating Panggil fungsi ini untuk menentukan apakah kotak dialog dihentikan.
CFindReplaceDialog::MatchCase Panggil fungsi ini untuk menentukan apakah pengguna ingin mencocokkan kasus string temukan dengan tepat.
CFindReplaceDialog::MatchWholeWord Panggil fungsi ini untuk menentukan apakah pengguna hanya ingin mencocokkan seluruh kata.
CFindReplaceDialog::ReplaceAll Panggil fungsi ini untuk menentukan apakah pengguna ingin semua kemunculan string diganti.
CFindReplaceDialog::ReplaceCurrent Panggil fungsi ini untuk menentukan apakah pengguna ingin kata saat ini diganti.
CFindReplaceDialog::SearchDown Panggil fungsi ini untuk menentukan apakah pengguna ingin pencarian dilanjutkan ke arah bawah.

Anggota Data Publik

Nama Deskripsi
CFindReplaceDialog::m_fr Struktur yang CFindReplaceDialog digunakan untuk menyesuaikan objek.

Keterangan

Tidak seperti kotak dialog umum Windows lainnya, CFindReplaceDialog objek tidak memiliki mode, memungkinkan pengguna berinteraksi dengan jendela lain saat mereka berada di layar. Ada dua jenis CFindReplaceDialog objek: Temukan kotak dialog dan kotak dialog Temukan/Ganti. Meskipun kotak dialog memungkinkan pengguna untuk memasukkan string pencarian dan pencarian/penggantian, mereka tidak melakukan fungsi pencarian atau penggantian apa pun. Anda harus menambahkan ini ke aplikasi.

Untuk membuat CFindReplaceDialog objek, gunakan konstruktor yang disediakan (yang tidak memiliki argumen). Karena ini adalah kotak dialog tanpa mode, alokasikan objek pada tumpukan menggunakan new operator, bukan pada tumpukan.

CFindReplaceDialog Setelah objek dibuat, Anda harus memanggil fungsi Buat anggota untuk membuat dan menampilkan kotak dialog.

Gunakan struktur m_fr untuk menginisialisasi kotak dialog sebelum memanggil Create. Strukturnya m_fr berjenis FINDREPLACE. Untuk informasi selengkapnya tentang struktur ini, lihat Windows SDK.

Agar jendela induk diberi tahu tentang permintaan temukan/ganti, Anda harus menggunakan fungsi Windows RegisterWindowMessage dan menggunakan makro peta pesan ON_REGISTERED_MESSAGE di jendela bingkai Anda yang menangani pesan terdaftar ini.

Anda dapat menentukan apakah pengguna telah memutuskan untuk mengakhiri kotak dialog dengan IsTerminating fungsi anggota.

CFindReplaceDialog bergantung pada file COMMDLG.DLL yang dikirim dengan Windows versi 3.1 dan yang lebih baru.

Untuk mengkustomisasi kotak dialog, dapatkan kelas dari CFindReplaceDialog, sediakan templat dialog kustom, dan tambahkan peta pesan untuk memproses pesan pemberitahuan dari kontrol yang diperluas. Setiap pesan yang tidak diolah harus diteruskan ke kelas dasar.

Menyesuaikan fungsi kait tidak diperlukan.

Untuk informasi selengkapnya tentang menggunakan CFindReplaceDialog, lihat Kelas Dialog Umum.

Hierarki Warisan

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFindReplaceDialog

Persyaratan

Header: afxdlgs.h

CFindReplaceDialog::CFindReplaceDialog

Membuat CFindReplaceDialog objek.

CFindReplaceDialog();

Keterangan

CFindReplaceDialog Karena objek adalah kotak dialog tanpa mode, Anda harus membangunnya di timbunan dengan menggunakan new operator.

Selama penghancuran, kerangka kerja mencoba melakukan delete this; pada penunjuk ke kotak dialog. Jika Anda membuat kotak dialog pada tumpukan, this penunjuk tidak ada dan perilaku yang tidak ditentukan dapat mengakibatkan.

Untuk informasi selengkapnya tentang konstruksi CFindReplaceDialog objek, lihat gambaran umum CFindReplaceDialog . Gunakan fungsi CFindReplaceDialog::Create member untuk menampilkan kotak dialog.

Contoh

// m_pFRDlg is a pointer to a class derived from CFindReplaceDialog
// which defines variables used by the FINDREPLACE structure.
// InitFindReplaceDlg creates a CFindReplaceDialog and initializes
// the m_fr with the data members from the derived class
void CMyRichEditView::InitFindReplaceDlg()
{
   if (NULL == m_pFRDlg)
   {
      m_pFRDlg = new CMyFindReplaceDialog(); // Must be created on the heap

      m_pFRDlg->Create(TRUE, _T(""), _T(""), FR_DOWN, this);

      m_pFRDlg->m_fr.lStructSize = sizeof(FINDREPLACE);
      m_pFRDlg->m_fr.hwndOwner = this->m_hWnd;
      m_pFRDlg->m_fr.lpstrFindWhat = m_pFRDlg->GetFindWhatStr();
      m_pFRDlg->m_fr.lpstrReplaceWith = m_pFRDlg->GetReplaceWithStr();
      m_pFRDlg->m_fr.wFindWhatLen = m_pFRDlg->GetFindWhatStrLen();
      m_pFRDlg->m_fr.wReplaceWithLen = m_pFRDlg->GetReplaceWithStrLen();
   }
}

CFindReplaceDialog::Create

Membuat dan menampilkan objek kotak dialog Temukan atau Temukan/Ganti, bergantung pada nilai bFindDialogOnly.

virtual BOOL Create(
    BOOL bFindDialogOnly,
    LPCTSTR lpszFindWhat,
    LPCTSTR lpszReplaceWith = NULL,
    DWORD dwFlags = FR_DOWN,
    CWnd* pParentWnd = NULL);

Parameter

bFindDialogOnly
Atur parameter ini ke TRUE untuk menampilkan kotak dialog Temukan . Atur ke FALSE untuk menampilkan kotak dialog Temukan/Ganti .

lpszFindWhat
Arahkan ke string pencarian default saat kotak dialog muncul. Jika NULL, kotak dialog tidak berisi string pencarian default.

lpszReplaceWith
Penunjuk ke string pengganti default saat kotak dialog muncul. Jika NULL, kotak dialog tidak berisi string pengganti default.

dwFlags
Satu atau beberapa bendera yang dapat Anda gunakan untuk menyesuaikan pengaturan kotak dialog, dikombinasikan menggunakan operator OR bitwise. Nilai default adalah FR_DOWN, yang menentukan bahwa pencarian adalah melanjutkan ke arah bawah. Lihat struktur FINDREPLACE di Windows SDK untuk informasi selengkapnya tentang bendera ini.

pParentWnd
Penunjuk ke jendela induk atau pemilik kotak dialog. Ini adalah jendela yang akan menerima pesan khusus yang menunjukkan bahwa tindakan temukan/ganti diminta. Jika NULL, jendela utama aplikasi digunakan.

Tampilkan Nilai

Bukan nol jika objek kotak dialog berhasil dibuat; jika tidak, 0.

Keterangan

Agar jendela induk diberi tahu tentang permintaan find/replace, Anda harus menggunakan fungsi Windows RegisterWindowMessage yang nilai pengembaliannya adalah nomor pesan yang unik untuk instans aplikasi. Jendela bingkai Anda harus memiliki entri peta pesan yang mendeklarasikan fungsi panggilan balik ( OnFindReplace dalam contoh berikut) yang menangani pesan terdaftar ini. Fragmen kode berikut adalah contoh cara melakukan ini untuk kelas jendela bingkai bernama CMyRichEditView:

// Message handler declared in CMyRichEditView class declaration
protected:
afx_msg LONG OnFindReplace(WPARAM wParam, LPARAM lParam);

 

// Register FindReplace window message.
static UINT WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);

 

// Message map entry to map from message to handler function.
ON_REGISTERED_MESSAGE(WM_FINDREPLACE, &CMyRichEditView::OnFindReplace)

Dalam fungsi Anda OnFindReplace , Anda menafsirkan niat pengguna dengan menggunakan metode CFindReplaceDialog::FindNext dan CFindReplaceDialog::IsTerminating dan Anda membuat kode untuk operasi temukan/ganti.

Contoh

Lihat contoh untuk CFindReplaceDialog::CFindReplaceDialog.

CFindReplaceDialog::FindNext

Panggil fungsi ini dari fungsi panggilan balik Anda untuk menentukan apakah pengguna ingin menemukan kemunculan string pencarian berikutnya.

BOOL FindNext() const;

Tampilkan Nilai

Nonzero jika pengguna ingin menemukan kemunculan string pencarian berikutnya; jika tidak, 0.

CFindReplaceDialog::GetFindString

Panggil fungsi ini dari fungsi panggilan balik Anda untuk mengambil string default yang akan ditemukan.

CString GetFindString() const;

Tampilkan Nilai

String default untuk ditemukan.

Contoh

LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
   UNREFERENCED_PARAMETER(wparam);

   CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);

   if (NULL != pDlg)
   {
      // Use pDlg as a pointer to the existing FindReplace dlg to
      // call CFindReplaceDialog member functions
      if (pDlg->IsTerminating())
      {
         CString csFindString;
         CString csReplaceString;

         csFindString = pDlg->GetFindString();
         csReplaceString = pDlg->GetReplaceString();

         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("FindString"), csFindString));
         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("ReplaceString"), csReplaceString));
      }
   }

   return 0;
}

CFindReplaceDialog::GetNotifier

Panggil fungsi ini untuk mengambil penunjuk ke kotak dialog Temukan Ganti saat ini.

static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);

Parameter

lParam
Nilai lparam diteruskan ke fungsi anggota jendela OnFindReplace bingkai.

Tampilkan Nilai

Penunjuk ke kotak dialog saat ini.

Keterangan

Ini harus digunakan dalam fungsi panggilan balik Anda untuk mengakses kotak dialog saat ini, memanggil fungsi anggotanya, dan mengakses m_fr struktur.

Contoh

Lihat CFindReplaceDialog::Buat untuk contoh cara mendaftarkan handler OnFindReplace untuk menerima pemberitahuan dari kotak dialog Temukan Ganti.

LRESULT CMyRichEditView::OnFindReplace(WPARAM wparam, LPARAM lparam)
{
   UNREFERENCED_PARAMETER(wparam);

   CFindReplaceDialog *pDlg = CFindReplaceDialog::GetNotifier(lparam);

   if (NULL != pDlg)
   {
      // Use pDlg as a pointer to the existing FindReplace dlg to
      // call CFindReplaceDialog member functions
      if (pDlg->IsTerminating())
      {
         CString csFindString;
         CString csReplaceString;

         csFindString = pDlg->GetFindString();
         csReplaceString = pDlg->GetReplaceString();

         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("FindString"), csFindString));
         VERIFY(AfxGetApp()->WriteProfileString(AfxGetApp()->m_pszAppName,
                                                _T("ReplaceString"), csReplaceString));
      }
   }

   return 0;
}

CFindReplaceDialog::GetReplaceString

Panggil fungsi ini untuk mengambil string pengganti saat ini.

CString GetReplaceString() const;

Tampilkan Nilai

String default untuk mengganti string yang ditemukan.

Contoh

Lihat contoh untuk CFindReplaceDialog::GetFindString.

CFindReplaceDialog::IsTerminating

Panggil fungsi ini dalam fungsi panggilan balik Anda untuk menentukan apakah pengguna telah memutuskan untuk mengakhiri kotak dialog.

BOOL IsTerminating() const;

Tampilkan Nilai

Bukan nol jika pengguna telah memutuskan untuk mengakhiri kotak dialog; jika tidak, 0.

Contoh

Lihat contoh untuk CFindReplaceDialog::GetFindString.

CFindReplaceDialog::m_fr

Digunakan untuk menyesuaikan CFindReplaceDialog objek.

FINDREPLACE m_fr;

Keterangan

m_fr adalah struktur jenis FINDREPLACE. Anggotanya menyimpan karakteristik objek kotak dialog. Setelah membuat CFindReplaceDialog objek, Anda dapat menggunakan m_fr untuk mengubah berbagai nilai dalam kotak dialog.

Untuk informasi selengkapnya tentang struktur ini, lihat FINDREPLACE struktur di Windows SDK.

Contoh

Lihat contoh untuk CFindReplaceDialog::CFindReplaceDialog.

CFindReplaceDialog::MatchCase

Panggil fungsi ini untuk menentukan apakah pengguna ingin mencocokkan kasus string temukan dengan tepat.

BOOL MatchCase() const;

Tampilkan Nilai

Nonzero jika pengguna ingin menemukan kemunculan string pencarian yang sama persis dengan kasus string pencarian; jika tidak, 0.

CFindReplaceDialog::MatchWholeWord

Panggil fungsi ini untuk menentukan apakah pengguna hanya ingin mencocokkan seluruh kata.

BOOL MatchWholeWord() const;

Tampilkan Nilai

Nonzero jika pengguna hanya ingin mencocokkan seluruh kata dari string pencarian; jika tidak, 0.

CFindReplaceDialog::ReplaceAll

Panggil fungsi ini untuk menentukan apakah pengguna ingin semua kemunculan string diganti.

BOOL ReplaceAll() const;

Tampilkan Nilai

Bukan nol jika pengguna telah meminta agar semua string yang cocok dengan string penggantian diganti; jika tidak, 0.

CFindReplaceDialog::ReplaceCurrent

Panggil fungsi ini untuk menentukan apakah pengguna ingin kata saat ini diganti.

BOOL ReplaceCurrent() const;

Tampilkan Nilai

Bukan nol jika pengguna telah meminta agar string yang saat ini dipilih diganti dengan string pengganti; jika tidak, 0.

CFindReplaceDialog::SearchDown

Panggil fungsi ini untuk menentukan apakah pengguna ingin pencarian dilanjutkan ke arah bawah.

BOOL SearchDown() const;

Tampilkan Nilai

Nonzero jika pengguna ingin pencarian dilanjutkan ke arah bawah; 0 jika pengguna ingin pencarian dilanjutkan ke arah atas.

Lihat juga

Kelas CCommonDialog
Bagan Hierarki