Partager via


CFindReplaceDialog, classe

Vous permet d’implémenter des boîtes de dialogue de recherche/remplacement de chaîne standard dans votre application.

Syntaxe

class CFindReplaceDialog : public CCommonDialog

Membres

Constructeurs publics

Nom Description
CFindReplaceDialog ::CFindReplaceDialog Appelez cette fonction pour construire un CFindReplaceDialog objet.

Méthodes publiques

Nom Description
CFindReplaceDialog ::Create Crée et affiche une CFindReplaceDialog boîte de dialogue.
CFindReplaceDialog ::FindNext Appelez cette fonction pour déterminer si l’utilisateur souhaite rechercher l’occurrence suivante de la chaîne de recherche.
CFindReplaceDialog ::GetFindString Appelez cette fonction pour récupérer la chaîne de recherche actuelle.
CFindReplaceDialog ::GetNotifier Appelez cette fonction pour récupérer la FINDREPLACE structure dans votre gestionnaire de messages inscrit.
CFindReplaceDialog ::GetReplaceString Appelez cette fonction pour récupérer la chaîne de remplacement actuelle.
CFindReplaceDialog ::IsTerminating Appelez cette fonction pour déterminer si la boîte de dialogue se termine.
CFindReplaceDialog ::MatchCase Appelez cette fonction pour déterminer si l’utilisateur souhaite correspondre exactement à la casse de la chaîne de recherche.
CFindReplaceDialog ::MatchWholeWord Appelez cette fonction pour déterminer si l’utilisateur souhaite correspondre uniquement aux mots entiers.
CFindReplaceDialog ::ReplaceAll Appelez cette fonction pour déterminer si l’utilisateur souhaite que toutes les occurrences de la chaîne soient remplacées.
CFindReplaceDialog ::ReplaceCurrent Appelez cette fonction pour déterminer si l’utilisateur souhaite que le mot actuel soit remplacé.
CFindReplaceDialog ::SearchDown Appelez cette fonction pour déterminer si l’utilisateur souhaite que la recherche continue dans une direction vers le bas.

Membres de données publics

Nom Description
CFindReplaceDialog ::m_fr Structure utilisée pour personnaliser un CFindReplaceDialog objet.

Notes

Contrairement aux autres boîtes de dialogue courantes windows, CFindReplaceDialog les objets sont sans mode, ce qui permet aux utilisateurs d’interagir avec d’autres fenêtres pendant qu’ils sont à l’écran. Il existe deux types d’objets : rechercher des boîtes de CFindReplaceDialog dialogue et des boîtes de dialogue Rechercher/remplacer. Bien que les boîtes de dialogue permettent à l’utilisateur d’entrer des chaînes de recherche et de recherche/remplacement, elles n’effectuent aucune des fonctions de recherche ou de remplacement. Vous devez les ajouter à l’application.

Pour construire un CFindReplaceDialog objet, utilisez le constructeur fourni (qui n’a aucun argument). Dans la mesure où il s’agit d’une boîte de dialogue sans mode, allouez l’objet sur le tas à l’aide de l’opérateur new , plutôt que sur la pile.

Une fois qu’un objet a été construit, vous devez appeler la fonction Créer un CFindReplaceDialog membre pour créer et afficher la boîte de dialogue.

Utilisez la structure m_fr pour initialiser la boîte de dialogue avant d’appeler Create. La m_fr structure est de type FINDREPLACE. Pour plus d’informations sur cette structure, consultez le Kit de développement logiciel (SDK) Windows.

Pour que la fenêtre parente soit avertie des demandes de recherche/remplacement, vous devez utiliser la fonction Windows RegisterWindowMessage et utiliser la macro de mappage de messages ON_REGISTERED_MESSAGE dans votre fenêtre frame qui gère ce message inscrit.

Vous pouvez déterminer si l’utilisateur a décidé de mettre fin à la boîte de dialogue avec la IsTerminating fonction membre.

CFindReplaceDialog s’appuie sur le fichier COMMDLG.DLL fourni avec Windows versions 3.1 et ultérieures.

Pour personnaliser la boîte de dialogue, dérivez une classe de CFindReplaceDialog, fournissez un modèle de dialogue personnalisé et ajoutez un mappage de messages pour traiter les messages de notification à partir des contrôles étendus. Tous les messages non traités doivent être passés à la classe de base.

La personnalisation de la fonction de hook n’est pas nécessaire.

Pour plus d’informations sur l’utilisation CFindReplaceDialog, consultez Classes de dialogue courantes.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFindReplaceDialog

Spécifications

En-tête : afxdlgs.h

CFindReplaceDialog ::CFindReplaceDialog

Construit un objet CFindReplaceDialog.

CFindReplaceDialog();

Notes

Étant donné que l’objet CFindReplaceDialog est une boîte de dialogue sans mode, vous devez la construire sur le tas à l’aide de l’opérateur new .

Pendant la destruction, l’infrastructure tente d’effectuer un delete this; pointeur vers la boîte de dialogue. Si vous avez créé la boîte de dialogue sur la pile, le this pointeur n’existe pas et le comportement non défini peut se produire.

Pour plus d’informations sur la construction d’objets, consultez la vue d’ensemble de CFindReplaceDialog CFindReplaceDialog. Utilisez la fonction membre CFindReplaceDialog ::Create pour afficher la boîte de dialogue.

Exemple

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

Crée et affiche un objet de boîte de dialogue Rechercher ou Rechercher/Remplacer, en fonction de la valeur de bFindDialogOnly.

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

Paramètres

bFindDialogOnly
Définissez ce paramètre sur TRUE pour afficher une boîte de dialogue Rechercher . Définissez-le sur FALSE pour afficher une boîte de dialogue Rechercher/remplacer .

lpszFindWhat
Pointeur vers la chaîne de recherche par défaut lorsque la boîte de dialogue s’affiche. Si la valeur est NULL, la boîte de dialogue ne contient pas de chaîne de recherche par défaut.

lpszReplaceWith
Pointeur vers la chaîne de remplacement par défaut lorsque la boîte de dialogue s’affiche. Si la valeur est NULL, la boîte de dialogue ne contient pas de chaîne de remplacement par défaut.

dwFlags
Un ou plusieurs indicateurs que vous pouvez utiliser pour personnaliser les paramètres de la boîte de dialogue, combinés à l’aide de l’opérateur OR au niveau du bit. La valeur par défaut est FR_DOWN, qui spécifie que la recherche doit continuer dans une direction vers le bas. Pour plus d’informations sur ces indicateurs, consultez la structure FINDREPLACE dans le Kit de développement logiciel (SDK) Windows.

pParentWnd
Pointeur vers la fenêtre parent ou propriétaire de la boîte de dialogue. Il s’agit de la fenêtre qui recevra le message spécial indiquant qu’une action de recherche/remplacement est demandée. Si la valeur est NULL, la fenêtre principale de l’application est utilisée.

Valeur de retour

Différent de zéro si l’objet de boîte de dialogue a été créé avec succès ; sinon 0.

Notes

Pour que la fenêtre parente soit avertie des demandes de recherche/remplacement, vous devez utiliser la fonction Windows RegisterWindowMessage dont la valeur de retour est un numéro de message unique à l’instance de l’application. Votre fenêtre frame doit avoir une entrée de mappage de messages qui déclare la fonction de rappel ( OnFindReplace dans l’exemple suivant) qui gère ce message inscrit. Le fragment de code suivant est un exemple de procédure à suivre pour une classe de fenêtre frame nommée 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)

Dans votre OnFindReplace fonction, vous interprétez les intentions de l’utilisateur à l’aide des méthodes CFindReplaceDialog ::FindNext et CFindReplaceDialog ::IsTerminating et vous créez le code pour les opérations de recherche/remplacement.

Exemple

Consultez l’exemple de CFindReplaceDialog ::CFindReplaceDialog.

CFindReplaceDialog ::FindNext

Appelez cette fonction à partir de votre fonction de rappel pour déterminer si l’utilisateur souhaite rechercher l’occurrence suivante de la chaîne de recherche.

BOOL FindNext() const;

Valeur de retour

Différent de zéro si l’utilisateur souhaite rechercher l’occurrence suivante de la chaîne de recherche ; sinon 0.

CFindReplaceDialog ::GetFindString

Appelez cette fonction à partir de votre fonction de rappel pour récupérer la chaîne par défaut à rechercher.

CString GetFindString() const;

Valeur de retour

Chaîne par défaut à rechercher.

Exemple

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

Appelez cette fonction pour récupérer un pointeur vers la boîte de dialogue Rechercher remplacer actuelle.

static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);

Paramètres

lParam
Valeur lparam passée à la fonction membre de OnFindReplace la fenêtre frame.

Valeur de retour

Pointeur vers la boîte de dialogue active.

Notes

Il doit être utilisé dans votre fonction de rappel pour accéder à la boîte de dialogue active, appeler ses fonctions membres et accéder à la m_fr structure.

Exemple

Consultez CFindReplaceDialog ::Create pour obtenir un exemple d’inscription du gestionnaire OnFindReplace pour recevoir des notifications de la boîte de dialogue Rechercher un remplacement.

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

Appelez cette fonction pour récupérer la chaîne de remplacement actuelle.

CString GetReplaceString() const;

Valeur de retour

Chaîne par défaut avec laquelle remplacer les chaînes trouvées.

Exemple

Consultez l’exemple de CFindReplaceDialog ::GetFindString.

CFindReplaceDialog ::IsTerminating

Appelez cette fonction dans votre fonction de rappel pour déterminer si l’utilisateur a décidé de mettre fin à la boîte de dialogue.

BOOL IsTerminating() const;

Valeur de retour

Différent de zéro si l’utilisateur a décidé de mettre fin à la boîte de dialogue ; sinon 0.

Exemple

Consultez l’exemple de CFindReplaceDialog ::GetFindString.

CFindReplaceDialog ::m_fr

Permet de personnaliser un CFindReplaceDialog objet.

FINDREPLACE m_fr;

Notes

m_fr est une structure de type FINDREPLACE. Ses membres stockent les caractéristiques de l’objet de boîte de dialogue. Après avoir construit un CFindReplaceDialog objet, vous pouvez utiliser m_fr pour modifier différentes valeurs dans la boîte de dialogue.

Pour plus d’informations sur cette structure, consultez la FINDREPLACE structure dans le Kit de développement logiciel (SDK) Windows.

Exemple

Consultez l’exemple de CFindReplaceDialog ::CFindReplaceDialog.

CFindReplaceDialog ::MatchCase

Appelez cette fonction pour déterminer si l’utilisateur souhaite correspondre exactement à la casse de la chaîne de recherche.

BOOL MatchCase() const;

Valeur de retour

Différent de zéro si l’utilisateur souhaite rechercher des occurrences de la chaîne de recherche qui correspondent exactement à la casse de la chaîne de recherche ; sinon 0.

CFindReplaceDialog ::MatchWholeWord

Appelez cette fonction pour déterminer si l’utilisateur souhaite correspondre uniquement aux mots entiers.

BOOL MatchWholeWord() const;

Valeur de retour

Différent de zéro si l’utilisateur souhaite correspondre uniquement aux mots entiers de la chaîne de recherche ; sinon 0.

CFindReplaceDialog ::ReplaceAll

Appelez cette fonction pour déterminer si l’utilisateur souhaite que toutes les occurrences de la chaîne soient remplacées.

BOOL ReplaceAll() const;

Valeur de retour

Différent de zéro si l’utilisateur a demandé que toutes les chaînes correspondant à la chaîne de remplacement soient remplacées ; sinon 0.

CFindReplaceDialog ::ReplaceCurrent

Appelez cette fonction pour déterminer si l’utilisateur souhaite que le mot actuel soit remplacé.

BOOL ReplaceCurrent() const;

Valeur de retour

Différent de zéro si l’utilisateur a demandé que la chaîne actuellement sélectionnée soit remplacée par la chaîne de remplacement ; sinon 0.

CFindReplaceDialog ::SearchDown

Appelez cette fonction pour déterminer si l’utilisateur souhaite que la recherche continue dans une direction vers le bas.

BOOL SearchDown() const;

Valeur de retour

Différent de zéro si l’utilisateur souhaite que la recherche continue dans une direction vers le bas ; 0 si l’utilisateur souhaite que la recherche continue dans une direction vers le haut.

Voir aussi

CCommonDialog, classe
Graphique hiérarchique