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::MatchWholeWord | 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 Create
zu 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 COMMDLG.DLL Datei, die mit Windows-Versionen 3.1 und höher ausgeliefert wird.
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 CFindReplaceDialog
finden Sie unter "Allgemeine Dialogklassen".
Vererbungshierarchie
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 Hauptfenster 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::MatchWholeWord
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.