Classe CFindReplaceDialog
Consente di implementare le finestre di dialogo trova/sostituisci stringa standard nell'applicazione.
Sintassi
class CFindReplaceDialog : public CCommonDialog
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CFindReplaceDialog::CFindReplaceDialog | Chiamare questa funzione per costruire un CFindReplaceDialog oggetto . |
Metodi pubblici
Nome | Descrizione |
---|---|
CFindReplaceDialog::Create | Crea e visualizza una CFindReplaceDialog finestra di dialogo. |
CFindReplaceDialog::FindNext | Chiamare questa funzione per determinare se l'utente vuole trovare l'occorrenza successiva della stringa di ricerca. |
CFindReplaceDialog::GetFindString | Chiamare questa funzione per recuperare la stringa di ricerca corrente. |
CFindReplaceDialog::GetNotifier | Chiamare questa funzione per recuperare la FINDREPLACE struttura nel gestore messaggi registrato. |
CFindReplaceDialog::GetReplaceString | Chiamare questa funzione per recuperare la stringa di sostituzione corrente. |
CFindReplaceDialog::IsTerminating | Chiamare questa funzione per determinare se la finestra di dialogo termina. |
CFindReplaceDialog::MatchCase | Chiamare questa funzione per determinare se l'utente vuole corrispondere esattamente al caso della stringa di ricerca. |
CFindReplaceDialog::MatchWholeWord | Chiamare questa funzione per determinare se l'utente vuole corrispondere solo a parole intere. |
CFindReplaceDialog::ReplaceAll | Chiamare questa funzione per determinare se l'utente desidera sostituire tutte le occorrenze della stringa. |
CFindReplaceDialog::ReplaceCurrent | Chiamare questa funzione per determinare se l'utente desidera sostituire la parola corrente. |
CFindReplaceDialog::SearchDown | Chiamare questa funzione per determinare se l'utente vuole che la ricerca proceda verso il basso. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CFindReplaceDialog::m_fr | Struttura utilizzata per personalizzare un CFindReplaceDialog oggetto. |
Osservazioni:
A differenza delle altre finestre di dialogo comuni di Windows, CFindReplaceDialog
gli oggetti sono in modalitàless, consentendo agli utenti di interagire con altre finestre mentre sono sullo schermo. Esistono due tipi di oggetti: finestre di CFindReplaceDialog
dialogo Trova e Finestre di dialogo Trova/Sostituisci. Anche se le finestre di dialogo consentono all'utente di immettere le stringhe di ricerca e ricerca/sostituzione, non eseguono alcuna delle funzioni di ricerca o sostituzione. È necessario aggiungerli all'applicazione.
Per costruire un CFindReplaceDialog
oggetto, utilizzare il costruttore fornito (senza argomenti). Poiché si tratta di una finestra di dialogo senza modalità, allocare l'oggetto nell'heap usando l'operatore new
anziché nello stack.
Dopo aver costruito un CFindReplaceDialog
oggetto, è necessario chiamare la funzione crea membro per creare e visualizzare la finestra di dialogo.
Utilizzare la struttura m_fr per inizializzare la finestra di dialogo prima di chiamare Create
. La m_fr
struttura è di tipo FINDREPLACE. Per altre informazioni su questa struttura, vedere Windows SDK.
Affinché la finestra padre venga notificata le richieste di ricerca/sostituzione, è necessario utilizzare la funzione Windows RegisterWindowMessage e utilizzare la macro ON_REGISTERED_MESSAGE mappa messaggi nella finestra cornice che gestisce il messaggio registrato.
È possibile determinare se l'utente ha deciso di terminare la finestra di dialogo con la IsTerminating
funzione membro.
CFindReplaceDialog
si basa sul file COMMDLG.DLL fornito con Windows 3.1 e versioni successive.
Per personalizzare la finestra di dialogo, derivare una classe da CFindReplaceDialog
, fornire un modello di finestra di dialogo personalizzato e aggiungere una mappa messaggi per elaborare i messaggi di notifica dai controlli estesi. Tutti i messaggi non elaborati devono essere passati alla classe base.
La personalizzazione della funzione hook non è necessaria.
Per altre informazioni sull'uso CFindReplaceDialog
di , vedere Classi di dialoghi comuni.
Gerarchia di ereditarietà
CFindReplaceDialog
Requisiti
Intestazione: afxdlgs.h
CFindReplaceDialog::CFindReplaceDialog
Costruisce un oggetto CFindReplaceDialog
.
CFindReplaceDialog();
Osservazioni:
Poiché l'oggetto CFindReplaceDialog
è una finestra di dialogo senza modalità, è necessario crearla nell'heap usando l'operatore new
.
Durante la distruzione, il framework tenta di eseguire un delete this;
oggetto sul puntatore alla finestra di dialogo. Se è stata creata la finestra di dialogo nello stack, il this
puntatore non esiste e il comportamento non definito può risultare.
Per altre informazioni sulla costruzione di CFindReplaceDialog
oggetti, vedere la panoramica di CFindReplaceDialog . Usare la funzione membro CFindReplaceDialog::Create per visualizzare la finestra di dialogo.
Esempio
// 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
Crea e visualizza un oggetto finestra di dialogo Trova o Trova/Sostituisci, a seconda del valore di bFindDialogOnly
.
virtual BOOL Create(
BOOL bFindDialogOnly,
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
Parametri
bFindDialogOnly
Impostare questo parametro su TRUE per visualizzare una finestra di dialogo Trova . Impostarlo su FALSE per visualizzare una finestra di dialogo Trova/Sostituisci .
lpszFindWhat
Puntatore alla stringa di ricerca predefinita quando viene visualizzata la finestra di dialogo. Se NULL, la finestra di dialogo non contiene una stringa di ricerca predefinita.
lpszReplaceWith
Puntatore alla stringa di sostituzione predefinita quando viene visualizzata la finestra di dialogo. Se NULL, la finestra di dialogo non contiene una stringa di sostituzione predefinita.
dwFlags
Uno o più flag che è possibile usare per personalizzare le impostazioni della finestra di dialogo, combinate usando l'operatore OR bit per bit. Il valore predefinito è FR_DOWN, che specifica che la ricerca deve procedere in direzione verso il basso. Per altre informazioni su questi flag, vedere la struttura FINDREPLACE in Windows SDK.
pParentWnd
Puntatore alla finestra padre o proprietario della finestra di dialogo. Si tratta della finestra che riceverà il messaggio speciale che indica che è richiesta un'azione di ricerca/sostituzione. Se NULL, viene usata la finestra principale dell'applicazione.
Valore restituito
Diverso da zero se l'oggetto della finestra di dialogo è stato creato correttamente; in caso contrario, 0.
Osservazioni:
Affinché la finestra padre venga notificata delle richieste di ricerca/sostituzione, è necessario utilizzare la funzione Windows RegisterWindowMessage il cui valore restituito è un numero di messaggio univoco per l'istanza dell'applicazione. La finestra cornice deve avere una voce della mappa messaggi che dichiara la funzione di callback ( OnFindReplace
nell'esempio seguente) che gestisce il messaggio registrato. Il frammento di codice seguente è un esempio di come eseguire questa operazione per una classe finestra cornice denominata 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)
OnFindReplace
All'interno della funzione si interpretano le intenzioni dell'utente usando i metodi CFindReplaceDialog::FindNext e CFindReplaceDialog::IsTerminating e si crea il codice per le operazioni di ricerca/sostituzione.
Esempio
Vedere l'esempio per CFindReplaceDialog::CFindReplaceDialog.
CFindReplaceDialog::FindNext
Chiamare questa funzione dalla funzione di callback per determinare se l'utente vuole trovare l'occorrenza successiva della stringa di ricerca.
BOOL FindNext() const;
Valore restituito
Diverso da zero se l'utente vuole trovare l'occorrenza successiva della stringa di ricerca; in caso contrario, 0.
CFindReplaceDialog::GetFindString
Chiamare questa funzione dalla funzione di callback per recuperare la stringa predefinita da trovare.
CString GetFindString() const;
Valore restituito
Stringa predefinita da trovare.
Esempio
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
Chiamare questa funzione per recuperare un puntatore alla finestra di dialogo Trova sostituzione corrente.
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
Parametri
lParam
Valore lparam passato alla funzione membro della OnFindReplace
finestra cornice.
Valore restituito
Puntatore alla finestra di dialogo corrente.
Osservazioni:
Deve essere usato all'interno della funzione di callback per accedere alla finestra di dialogo corrente, chiamare le funzioni membro e accedere alla m_fr
struttura.
Esempio
Vedere CFindReplaceDialog::Create per un esempio di come registrare il gestore OnFindReplace per ricevere notifiche dalla finestra di dialogo Trova sostituzione.
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
Chiamare questa funzione per recuperare la stringa di sostituzione corrente.
CString GetReplaceString() const;
Valore restituito
Stringa predefinita con cui sostituire le stringhe trovate.
Esempio
Vedere l'esempio per CFindReplaceDialog::GetFindString.
CFindReplaceDialog::IsTerminating
Chiamare questa funzione all'interno della funzione di callback per determinare se l'utente ha deciso di terminare la finestra di dialogo.
BOOL IsTerminating() const;
Valore restituito
Diverso da zero se l'utente ha deciso di terminare la finestra di dialogo; in caso contrario, 0.
Esempio
Vedere l'esempio per CFindReplaceDialog::GetFindString.
CFindReplaceDialog::m_fr
Utilizzato per personalizzare un CFindReplaceDialog
oggetto.
FINDREPLACE m_fr;
Osservazioni:
m_fr
è una struttura di tipo FINDREPLACE. I relativi membri archiviano le caratteristiche dell'oggetto finestra di dialogo. Dopo aver costruito un CFindReplaceDialog
oggetto, è possibile usare m_fr
per modificare vari valori nella finestra di dialogo.
Per altre informazioni su questa struttura, vedere la FINDREPLACE
struttura in Windows SDK.
Esempio
Vedere l'esempio per CFindReplaceDialog::CFindReplaceDialog.
CFindReplaceDialog::MatchCase
Chiamare questa funzione per determinare se l'utente vuole corrispondere esattamente al caso della stringa di ricerca.
BOOL MatchCase() const;
Valore restituito
Diverso da zero se l'utente vuole trovare occorrenze della stringa di ricerca che corrispondono esattamente al caso della stringa di ricerca; in caso contrario, 0.
CFindReplaceDialog::MatchWholeWord
Chiamare questa funzione per determinare se l'utente vuole corrispondere solo a parole intere.
BOOL MatchWholeWord() const;
Valore restituito
Diverso da zero se l'utente vuole corrispondere solo alle parole intere della stringa di ricerca; in caso contrario, 0.
CFindReplaceDialog::ReplaceAll
Chiamare questa funzione per determinare se l'utente desidera sostituire tutte le occorrenze della stringa.
BOOL ReplaceAll() const;
Valore restituito
Diverso da zero se l'utente ha richiesto che tutte le stringhe corrispondenti alla stringa di sostituzione vengano sostituite; in caso contrario, 0.
CFindReplaceDialog::ReplaceCurrent
Chiamare questa funzione per determinare se l'utente desidera sostituire la parola corrente.
BOOL ReplaceCurrent() const;
Valore restituito
Diverso da zero se l'utente ha richiesto che la stringa attualmente selezionata venga sostituita con la stringa di sostituzione; in caso contrario, 0.
CFindReplaceDialog::SearchDown
Chiamare questa funzione per determinare se l'utente vuole che la ricerca proceda verso il basso.
BOOL SearchDown() const;
Valore restituito
Diverso da zero se l'utente vuole che la ricerca proceda verso il basso; 0 se l'utente desidera che la ricerca proceda verso l'alto.