Dela via


CFindReplaceDialog-klass

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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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.

Se även

CCommonDialog-klass
hierarkidiagram