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