Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gör att du kan implementera standarddialogrutorna sök/ersätt i ditt program.
Syntax
class CFindReplaceDialog : public CCommonDialog
Medlemmar
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
| CFindReplaceDialog::CFindReplaceDialog | Anropa den här funktionen för att skapa ett CFindReplaceDialog objekt. |
Offentliga metoder
| Namn | Beskrivning |
|---|---|
| CFindReplaceDialog::Skapa | Skapar och visar en CFindReplaceDialog dialogruta. |
| CFindReplaceDialog::FindNext | Anropa den här funktionen för att avgöra om användaren vill hitta nästa förekomst av söksträngen. |
| CFindReplaceDialog::GetFindString | Anropa den här funktionen för att hämta den aktuella söksträngen. |
| CFindReplaceDialog::GetNotifier | Anropa den här funktionen för att hämta FINDREPLACE strukturen i den registrerade meddelandehanteraren. |
| CFindReplaceDialog::GetReplaceString | Anropa den här funktionen för att hämta den aktuella ersättningssträngen. |
| CFindReplaceDialog::IsTerminating | Anropa den här funktionen för att avgöra om dialogrutan avslutas. |
| CFindReplaceDialog::MatchCase | Anropa den här funktionen för att avgöra om användaren vill matcha fallet med söksträngen exakt. |
| CFindReplaceDialog::MatchWholeWord | Anropa den här funktionen för att avgöra om användaren bara vill matcha hela ord. |
| CFindReplaceDialog::ReplaceAll | Anropa den här funktionen för att avgöra om användaren vill att alla förekomster av strängen ska ersättas. |
| CFindReplaceDialog::ReplaceCurrent | Anropa den här funktionen för att avgöra om användaren vill att det aktuella ordet ska ersättas. |
| CFindReplaceDialog::SearchDown | Anropa den här funktionen för att avgöra om användaren vill att sökningen ska fortsätta nedåt. |
Medlemmar i offentliga data
| Namn | Beskrivning |
|---|---|
| CFindReplaceDialog::m_fr | En struktur som används för att anpassa ett CFindReplaceDialog objekt. |
Anmärkningar
Till skillnad från de andra vanliga Windows-dialogrutorna CFindReplaceDialog är objekten lägeslösa, vilket gör att användarna kan interagera med andra fönster medan de är på skärmen. Det finns två typer av CFindReplaceDialog objekt: Sök efter dialogrutor och dialogrutan Sök/ersätt. Även om dialogrutorna gör det möjligt för användaren att mata in sök- och sök-/ersätt-strängar, utför de inte någon av funktionerna för sökning eller ersättning. Du måste lägga till dessa i programmet.
Om du vill konstruera ett CFindReplaceDialog objekt använder du den angivna konstruktorn (som inte har några argument). Eftersom det här är en lägeslös dialogruta allokerar du objektet på heapen med operatorn new i stället för på stacken.
När ett CFindReplaceDialog objekt har konstruerats måste du anropa funktionen Skapa medlem för att skapa och visa dialogrutan.
Använd m_fr-strukturen för att initiera dialogrutan innan du anropar Create. Strukturen m_fr är av typen FINDREPLACE. Mer information om den här strukturen finns i Windows SDK.
För att det överordnade fönstret ska meddelas om sök-/ersätt-begäranden måste du använda funktionen Windows RegisterWindowMessage och använda ON_REGISTERED_MESSAGE meddelandekarta-makrot i ramfönstret som hanterar det registrerade meddelandet.
Du kan avgöra om användaren har valt att avsluta dialogrutan med IsTerminating medlemsfunktionen.
CFindReplaceDialog förlitar sig på den COMMDLG.DLL fil som levereras med Windows version 3.1 och senare.
Om du vill anpassa dialogrutan härleder du en klass från CFindReplaceDialog, tillhandahåller en anpassad dialogmall och lägger till en meddelandekarta för att bearbeta meddelandena från de utökade kontrollerna. Alla obearbetade meddelanden ska skickas till basklassen.
Det krävs inte att du anpassar hook-funktionen.
Mer information om hur du använder CFindReplaceDialogfinns i Vanliga dialogklasser.
Arvshierarki
CFindReplaceDialog
Kravspecifikation
Rubrik: afxdlgs.h
CFindReplaceDialog::CFindReplaceDialog
Konstruerar ett CFindReplaceDialog objekt.
CFindReplaceDialog();
Anmärkningar
Eftersom objektet CFindReplaceDialog är en lägeslös dialogruta måste du konstruera det på heapen med hjälp av operatorn new .
Under destruktionen försöker ramverket utföra en delete this; på pekaren till dialogrutan. Om du har skapat dialogrutan i stacken finns inte pekaren this och odefinierat beteende kan uppstå.
Mer information om hur du skapar CFindReplaceDialog objekt finns i översikten CFindReplaceDialog . Använd funktionen CFindReplaceDialog::Create member för att visa dialogrutan.
Exempel
// 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::Skapa
Skapar och visar antingen ett sök- eller sök-/ersätt-dialogruteobjekt, beroende på värdet för bFindDialogOnly.
virtual BOOL Create(
BOOL bFindDialogOnly,
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
Parameterar
bFindDialogOnly
Ställ in den här parametern på TRUE för att visa en sökdialogruta. Ställ in den på FALSE för att visa dialogrutan Sök/Ersätt .
lpszFindWhat
Pekare till standardsöksträngen när dialogrutan visas. Om null innehåller dialogrutan inte någon standardsöksträng.
lpszReplaceWith
Pekare till standardsträngen för ersättning när dialogrutan visas. Om null innehåller dialogrutan inte någon standardsträng för ersättning.
dwFlags
En eller flera flaggor som du kan använda för att anpassa inställningarna i dialogrutan, tillsammans med operatorn BITWISE OR. Standardvärdet är FR_DOWN, vilket anger att sökningen ska fortsätta nedåt. Mer information om dessa flaggor finns i FINDREPLACE-strukturen i Windows SDK.
pParentWnd
En pekare till dialogrutans överordnade fönster eller ägarfönster. Det här är fönstret som får det särskilda meddelandet som anger att en sök-/ersättningsåtgärd begärs. Om null används programmets huvudfönster.
Returvärde
Nonzero om dialogruteobjektet har skapats. annars 0.
Anmärkningar
För att det överordnade fönstret ska meddelas om sök-/ersätt-begäranden måste du använda funktionen Windows RegisterWindowMessage vars returvärde är ett meddelandenummer som är unikt för programmets instans. Ramfönstret bör ha en post för meddelandekartan som deklarerar återanropsfunktionen (OnFindReplace i exemplet nedan) som hanterar det registrerade meddelandet. Följande kodfragment är ett exempel på hur du gör detta för en ramfönsterklass med namnet 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)
I din OnFindReplace funktion tolkar du användarens avsikter med hjälp av metoderna CFindReplaceDialog::FindNext och CFindReplaceDialog::IsTerminating och du skapar koden för åtgärderna find/replace.
Exempel
Se exemplet för CFindReplaceDialog::CFindReplaceDialog.
CFindReplaceDialog::FindNext
Anropa den här funktionen från återanropsfunktionen för att avgöra om användaren vill hitta nästa förekomst av söksträngen.
BOOL FindNext() const;
Returvärde
Nonzero om användaren vill hitta nästa förekomst av söksträngen. annars 0.
CFindReplaceDialog::GetFindString
Anropa den här funktionen från återanropsfunktionen för att hämta standardsträngen som ska hittas.
CString GetFindString() const;
Returvärde
Standardsträngen som ska hittas.
Exempel
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
Anropa den här funktionen för att hämta en pekare till den aktuella dialogrutan Sök efter ersättning.
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
Parameterar
lParam
Lparam-värdet som skickas till bildrutefönstrets OnFindReplace medlemsfunktion.
Returvärde
En pekare till den aktuella dialogrutan.
Anmärkningar
Den bör användas i motringningsfunktionen för att komma åt den aktuella dialogrutan, anropa dess medlemsfunktioner och komma åt m_fr strukturen.
Exempel
Se CFindReplaceDialog::Skapa för ett exempel på hur du registrerar OnFindReplace-hanteraren för att ta emot meddelanden från dialogrutan Sök efter ersättning.
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
Anropa den här funktionen för att hämta den aktuella ersättningssträngen.
CString GetReplaceString() const;
Returvärde
Standardsträngen som du vill ersätta hittade strängar med.
Exempel
Se exemplet för CFindReplaceDialog::GetFindString.
CFindReplaceDialog::IsTerminating
Anropa den här funktionen i återanropsfunktionen för att avgöra om användaren har bestämt sig för att avsluta dialogrutan.
BOOL IsTerminating() const;
Returvärde
Nonzero om användaren har beslutat att avsluta dialogrutan; annars 0.
Exempel
Se exemplet för CFindReplaceDialog::GetFindString.
CFindReplaceDialog::m_fr
Används för att anpassa ett CFindReplaceDialog objekt.
FINDREPLACE m_fr;
Anmärkningar
m_fr är en struktur av typen FINDREPLACE. Dess medlemmar lagrar egenskaperna för dialogruteobjektet. När du har skapat ett CFindReplaceDialog objekt kan du använda m_fr för att ändra olika värden i dialogrutan.
Mer information om den FINDREPLACE här strukturen finns i strukturen i Windows SDK.
Exempel
Se exemplet för CFindReplaceDialog::CFindReplaceDialog.
CFindReplaceDialog::MatchCase
Anropa den här funktionen för att avgöra om användaren vill matcha fallet med söksträngen exakt.
BOOL MatchCase() const;
Returvärde
Nonzero om användaren vill hitta förekomster av söksträngen som exakt matchar söksträngens skiftläge. annars 0.
CFindReplaceDialog::MatchWholeWord
Anropa den här funktionen för att avgöra om användaren bara vill matcha hela ord.
BOOL MatchWholeWord() const;
Returvärde
Nonzero om användaren bara vill matcha hela orden i söksträngen. annars 0.
CFindReplaceDialog::ReplaceAll
Anropa den här funktionen för att avgöra om användaren vill att alla förekomster av strängen ska ersättas.
BOOL ReplaceAll() const;
Returvärde
Nonzero om användaren har begärt att alla strängar som matchar ersättningssträngen ska ersättas. annars 0.
CFindReplaceDialog::ReplaceCurrent
Anropa den här funktionen för att avgöra om användaren vill att det aktuella ordet ska ersättas.
BOOL ReplaceCurrent() const;
Returvärde
Nonzero om användaren har begärt att den markerade strängen ska ersättas med ersättningssträngen. annars 0.
CFindReplaceDialog::SearchDown
Anropa den här funktionen för att avgöra om användaren vill att sökningen ska fortsätta nedåt.
BOOL SearchDown() const;
Returvärde
Nonzero om användaren vill att sökningen ska fortsätta nedåt. 0 om användaren vill att sökningen ska fortsätta uppåt.