Freigeben über


CFindReplaceDialog-Klasse

Ermöglicht Ihnen die Implementierung von Standardmäßigen Dialogfeldern zum Suchen/Ersetzen von Zeichenfolgen in Ihrer Anwendung.

Syntax

class CFindReplaceDialog : public CCommonDialog

Member

Öffentliche Konstruktoren

Name Beschreibung
CFindReplaceDialog::CFindReplaceDialog Rufen Sie diese Funktion auf, um ein CFindReplaceDialog Objekt zu erstellen.

Öffentliche Methoden

Name Beschreibung
CFindReplaceDialog::Create Erstellt und zeigt ein CFindReplaceDialog Dialogfeld an.
CFindReplaceDialog::FindNext Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer das nächste Vorkommen der Suchzeichenfolge finden möchte.
CFindReplaceDialog::GetFindString Rufen Sie diese Funktion auf, um die aktuelle Suchzeichenfolge abzurufen.
CFindReplaceDialog::GetNotifier Rufen Sie diese Funktion auf, um die FINDREPLACE Struktur in Ihrem registrierten Nachrichtenhandler abzurufen.
CFindReplaceDialog::GetReplaceString Rufen Sie diese Funktion auf, um die aktuelle Ersetzungszeichenfolge abzurufen.
CFindReplaceDialog::IsTerminating Rufen Sie diese Funktion auf, um zu bestimmen, ob das Dialogfeld beendet wird.
CFindReplaceDialog::MatchCase Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer genau mit dem Fall der Suchzeichenfolge übereinstimmen möchte.
CFindReplaceDialog::Match Wer leWord Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer nur ganze Wörter abgleichen möchte.
CFindReplaceDialog::ReplaceAll Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer alle Vorkommen der Zeichenfolge ersetzen möchte.
CFindReplaceDialog::ReplaceCurrent Rufen Sie diese Funktion auf, um zu bestimmen, ob das aktuelle Wort ersetzt werden soll.
CFindReplaceDialog::SearchDown Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer die Suche in richtung unten fortsetzen soll.

Öffentliche Datenmember

Name Beschreibung
CFindReplaceDialog::m_fr Eine Struktur, die zum Anpassen eines CFindReplaceDialog Objekts verwendet wird.

Hinweise

Im Gegensatz zu den anderen gängigen Windows-Dialogfeldern CFindReplaceDialog sind Objekte moduslos, sodass Benutzer während des Bildschirms mit anderen Fenstern interagieren können. Es gibt zwei Arten von CFindReplaceDialog Objekten: Dialogfelder suchen und Dialogfelder suchen/Ersetzen. Obwohl die Dialogfelder dem Benutzer das Eingeben von Such- und Such-/Ersetzungszeichenfolgen ermöglichen, führt er keine Such- oder Ersetzungsfunktionen durch. Sie müssen diese der Anwendung hinzufügen.

Verwenden Sie zum Erstellen eines CFindReplaceDialog Objekts den bereitgestellten Konstruktor (der keine Argumente enthält). Da es sich um ein modusloses Dialogfeld handelt, weisen Sie das Objekt mithilfe des new Operators anstelle des Stapels dem Heap zu.

Nachdem ein CFindReplaceDialog Objekt erstellt wurde, müssen Sie die Funktion "Member erstellen" aufrufen, um das Dialogfeld zu erstellen und anzuzeigen.

Verwenden Sie die m_fr Struktur, um das Dialogfeld vor dem Aufrufen Createzu initialisieren. Die m_fr Struktur ist vom Typ FINDREPLACE. Weitere Informationen zu dieser Struktur finden Sie im Windows SDK.

Damit das übergeordnete Fenster über Such-/Ersetzungsanforderungen benachrichtigt werden kann, müssen Sie die Windows RegisterWindowMessage-Funktion verwenden und das ON_REGISTERED_MESSAGE Nachrichtenzuordnungsmakro in Ihrem Framefenster verwenden, das diese registrierte Nachricht behandelt.

Sie können bestimmen, ob sich der Benutzer entschieden hat, das Dialogfeld mit der IsTerminating Memberfunktion zu beenden.

CFindReplaceDialog basiert auf der DATEI COMMDLG.DLL, die im Lieferumfang von Windows-Versionen 3.1 und höher enthalten ist.

Um das Dialogfeld anzupassen, leiten Sie eine Klasse ab CFindReplaceDialog, stellen Sie eine benutzerdefinierte Dialogfeldvorlage bereit, und fügen Sie eine Meldungszuordnung hinzu, um die Benachrichtigungen aus den erweiterten Steuerelementen zu verarbeiten. Alle unverarbeiteten Nachrichten sollten an die Basisklasse übergeben werden.

Das Anpassen der Hook-Funktion ist nicht erforderlich.

Weitere Informationen zur Verwendung CFindReplaceDialogfinden Sie unter "Allgemeine Dialogklassen".

Vererbungshierarchie

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CFindReplaceDialog

Anforderungen

Header: afxdlgs.h

CFindReplaceDialog::CFindReplaceDialog

Erstellt ein CFindReplaceDialog-Objekt.

CFindReplaceDialog();

Hinweise

Da es sich bei dem CFindReplaceDialog Objekt um ein dialogfeld ohne Modus handelt, müssen Sie es mithilfe des Operators auf dem new Heap erstellen.

Während der Zerstörung versucht das Framework, einen delete this; Zeiger auf das Dialogfeld auszuführen. Wenn Sie das Dialogfeld auf dem Stapel erstellt haben, ist der this Zeiger nicht vorhanden, und es kann zu einem nicht definierten Verhalten führen.

Weitere Informationen zum Erstellen von CFindReplaceDialog Objekten finden Sie in der CFindReplaceDialog-Übersicht . Verwenden Sie die CFindReplaceDialog::Create-Memberfunktion , um das Dialogfeld anzuzeigen.

Beispiel

// 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

Erstellt und zeigt entweder ein Find- oder Find/Replace-Dialogfeldobjekt an, je nach Wert von bFindDialogOnly.

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

Parameter

bFindDialogOnly
Legen Sie diesen Parameter auf TRUE fest, um ein Suchdialogfeld anzuzeigen. Legen Sie ihn auf FALSE fest, um ein Dialogfeld "Suchen/Ersetzen " anzuzeigen.

lpszFindWhat
Zeigen Sie auf die Standardsuchzeichenfolge, wenn das Dialogfeld angezeigt wird. Wenn NULL, enthält das Dialogfeld keine standardmäßige Suchzeichenfolge.

lpszReplaceWith
Zeigen Sie auf die Standardersetzungszeichenfolge, wenn das Dialogfeld angezeigt wird. Wenn NULL, enthält das Dialogfeld keine Standardersetzungszeichenfolge.

dwFlags
Ein oder mehrere Kennzeichen, mit denen Sie die Einstellungen des Dialogfelds anpassen können, kombiniert mit dem bitweisen OR-Operator. Der Standardwert ist FR_DOWN, der angibt, dass die Suche in richtung unten fortgesetzt werden soll. Weitere Informationen zu diesen Flags finden Sie in der FINDREPLACE-Struktur im Windows SDK.

pParentWnd
Ein Zeiger auf das übergeordnete Oder Besitzerfenster des Dialogfelds. Dies ist das Fenster, das die spezielle Meldung empfängt, die angibt, dass eine Such-/Ersetzungsaktion angefordert wird. Wenn NULL, wird das Standard Fenster der Anwendung verwendet.

Rückgabewert

Nonzero, wenn das Dialogfeldobjekt erfolgreich erstellt wurde; andernfalls 0.

Hinweise

Damit das übergeordnete Fenster über Such-/Ersetzungsanforderungen benachrichtigt werden kann, müssen Sie die Windows RegisterWindowMessage-Funktion verwenden, deren Rückgabewert eine für die Instanz der Anwendung eindeutige Nachrichtennummer ist. Ihr Framefenster sollte über einen Nachrichtenzuordnungseintrag verfügen, der die Rückruffunktion ( OnFindReplace im folgenden Beispiel) deklariert, die diese registrierte Nachricht behandelt. Das folgende Codefragment ist ein Beispiel für die Vorgehensweise für eine Framefensterklasse mit dem Namen 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)

In Ihrer OnFindReplace Funktion interpretieren Sie die Absichten des Benutzers mithilfe der Methoden "CFindReplaceDialog::FindNext " und "CFindReplaceDialog::IsTerminating ", und erstellen Sie den Code für die Such-/Ersetzungsvorgänge.

Beispiel

Sehen Sie sich das Beispiel für CFindReplaceDialog::CFindReplaceDialog an.

CFindReplaceDialog::FindNext

Rufen Sie diese Funktion aus der Rückruffunktion auf, um zu bestimmen, ob der Benutzer das nächste Vorkommen der Suchzeichenfolge finden möchte.

BOOL FindNext() const;

Rückgabewert

Nonzero, wenn der Benutzer das nächste Vorkommen der Suchzeichenfolge finden möchte; andernfalls 0.

CFindReplaceDialog::GetFindString

Rufen Sie diese Funktion aus der Rückruffunktion auf, um die zu suchende Standardzeichenfolge abzurufen.

CString GetFindString() const;

Rückgabewert

Die zu suchende Standardzeichenfolge.

Beispiel

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

Rufen Sie diese Funktion auf, um einen Zeiger auf das aktuelle Dialogfeld "Ersetzen suchen" abzurufen.

static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);

Parameter

lParam
Der lparam-Wert , der an die Memberfunktion des Framefensters OnFindReplace übergeben wird.

Rückgabewert

Ein Zeiger auf das aktuelle Dialogfeld.

Hinweise

Sie sollte in Ihrer Rückruffunktion verwendet werden, um auf das aktuelle Dialogfeld zuzugreifen, seine Memberfunktionen aufzurufen und auf die m_fr Struktur zuzugreifen.

Beispiel

Siehe CFindReplaceDialog::Create für ein Beispiel zum Registrieren des OnFindReplace-Handlers zum Empfangen von Benachrichtigungen aus dem Dialogfeld "Ersetzen suchen".

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

Rufen Sie diese Funktion auf, um die aktuelle Ersetzungszeichenfolge abzurufen.

CString GetReplaceString() const;

Rückgabewert

Die Standardzeichenfolge, mit der gefundene Zeichenfolgen ersetzt werden sollen.

Beispiel

Sehen Sie sich das Beispiel für CFindReplaceDialog::GetFindString an.

CFindReplaceDialog::IsTerminating

Rufen Sie diese Funktion in Ihrer Rückruffunktion auf, um zu bestimmen, ob der Benutzer beschlossen hat, das Dialogfeld zu beenden.

BOOL IsTerminating() const;

Rückgabewert

Nonzero, wenn der Benutzer beschlossen hat, das Dialogfeld zu beenden; andernfalls 0.

Beispiel

Sehen Sie sich das Beispiel für CFindReplaceDialog::GetFindString an.

CFindReplaceDialog::m_fr

Wird verwendet, um ein CFindReplaceDialog Objekt anzupassen.

FINDREPLACE m_fr;

Hinweise

m_fr ist eine Struktur vom Typ FINDREPLACE. Die Member speichern die Merkmale des Dialogfeldobjekts. Nach dem Erstellen eines CFindReplaceDialog Objekts können m_fr Sie verschiedene Werte im Dialogfeld ändern.

Weitere Informationen zu dieser Struktur finden Sie in der FINDREPLACE Struktur im Windows SDK.

Beispiel

Sehen Sie sich das Beispiel für CFindReplaceDialog::CFindReplaceDialog an.

CFindReplaceDialog::MatchCase

Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer genau mit dem Fall der Suchzeichenfolge übereinstimmen möchte.

BOOL MatchCase() const;

Rückgabewert

Nonzero, wenn der Benutzer Vorkommen der Suchzeichenfolge finden möchte, die genau dem Fall der Suchzeichenfolge entsprechen; andernfalls 0.

CFindReplaceDialog::Match Wer leWord

Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer nur ganze Wörter abgleichen möchte.

BOOL MatchWholeWord() const;

Rückgabewert

Nonzero, wenn der Benutzer nur die gesamten Wörter der Suchzeichenfolge abgleichen möchte; andernfalls 0.

CFindReplaceDialog::ReplaceAll

Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer alle Vorkommen der Zeichenfolge ersetzen möchte.

BOOL ReplaceAll() const;

Rückgabewert

Nonzero, wenn der Benutzer angefordert hat, dass alle Zeichenfolgen, die der Ersetzungszeichenfolge entsprechen, ersetzt werden; andernfalls 0.

CFindReplaceDialog::ReplaceCurrent

Rufen Sie diese Funktion auf, um zu bestimmen, ob das aktuelle Wort ersetzt werden soll.

BOOL ReplaceCurrent() const;

Rückgabewert

Nonzero, wenn der Benutzer angefordert hat, dass die aktuell ausgewählte Zeichenfolge durch die Ersetzungszeichenfolge ersetzt werden soll; andernfalls 0.

CFindReplaceDialog::SearchDown

Rufen Sie diese Funktion auf, um zu bestimmen, ob der Benutzer die Suche in richtung unten fortsetzen soll.

BOOL SearchDown() const;

Rückgabewert

Nonzero, wenn der Benutzer möchte, dass die Suche in richtung unten fortgesetzt wird; 0, wenn der Benutzer die Suche in richtungwärts fortsetzen möchte.

Siehe auch

CCommonDialog-Klasse
Hierarchiediagramm