Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Permite que você implemente caixas de diálogo padrão Localizar/Substituir em seu aplicativo.
Sintaxe
class CFindReplaceDialog : public CCommonDialog
Membros
Construtores Públicos
| Nome | Descrição |
|---|---|
| CFindReplaceDialog::CFindReplaceDialog | Chame essa função para construir um CFindReplaceDialog objeto. |
Métodos Públicos
| Nome | Descrição |
|---|---|
| CFindReplaceDialog::Criar | Cria e exibe uma CFindReplaceDialog caixa de diálogo. |
| CFindReplaceDialog::FindNext | Chame essa função para determinar se o usuário deseja encontrar a próxima ocorrência da cadeia de caracteres de localização. |
| CFindReplaceDialog::GetFindString | Chame essa função para recuperar a cadeia de caracteres de localização atual. |
| CFindReplaceDialog::GetNotifier | Chame essa função para recuperar a FINDREPLACE estrutura em seu manipulador de mensagens registrado. |
| CFindReplaceDialog::GetReplaceString | Chame essa função para recuperar a cadeia de caracteres de substituição atual. |
| CFindReplaceDialog::IsTerminating | Chame essa função para determinar se a caixa de diálogo está terminando. |
| CFindReplaceDialog::MatchCase | Chame essa função para determinar se o usuário deseja corresponder exatamente ao caso da cadeia de caracteres de localização. |
| CFindReplaceDialog::MatchWholeWord | Chame essa função para determinar se o usuário deseja corresponder apenas a palavras inteiras. |
| CFindReplaceDialog::ReplaceAll | Chame essa função para determinar se o usuário deseja que todas as ocorrências da cadeia de caracteres sejam substituídas. |
| CFindReplaceDialog::ReplaceCurrent | Chame essa função para determinar se o usuário deseja que a palavra atual seja substituída. |
| CFindReplaceDialog::SearchDown | Chame essa função para determinar se o usuário deseja que a pesquisa prossiga em uma direção descendente. |
Membros de Dados Públicos
| Nome | Descrição |
|---|---|
| CFindReplaceDialog::m_fr | Uma estrutura usada para personalizar um CFindReplaceDialog objeto. |
Observações
Ao contrário das outras caixas de diálogo comuns do Windows, CFindReplaceDialog os objetos são sem modo, permitindo que os usuários interajam com outras janelas enquanto estão na tela. Existem dois tipos de objetos: caixas de CFindReplaceDialog diálogo Localizar e Localizar/Substituir. Embora as caixas de diálogo permitam que o usuário insira cadeias de caracteres de pesquisa e pesquisa/substituição, elas não executam nenhuma das funções de pesquisa ou substituição. Você deve adicioná-los ao aplicativo.
Para construir um CFindReplaceDialog objeto, use o construtor fornecido (que não tem argumentos). Como esta é uma caixa de diálogo sem moderação, aloque o objeto na pilha usando o new operador , em vez de na pilha.
Depois que um CFindReplaceDialog objeto tiver sido construído, você deve chamar a função Criar membro para criar e exibir a caixa de diálogo.
Use a estrutura m_fr para inicializar a caixa de diálogo antes de chamar Create. A m_fr estrutura é do tipo FINDREPLACE. Para obter mais informações sobre essa estrutura, consulte o SDK do Windows.
Para que a janela pai seja notificada de solicitações de localização/substituição, você deve usar a função RegisterWindowMessage do Windows e usar a macro de mapa de mensagem ON_REGISTERED_MESSAGE na janela de quadro que manipula essa mensagem registrada.
Você pode determinar se o usuário decidiu encerrar a caixa de diálogo com a IsTerminating função de membro.
CFindReplaceDialog depende do arquivo COMMDLG.DLL fornecido com o Windows versões 3.1 e posteriores.
Para personalizar a caixa de diálogo, derive uma classe de , forneça um modelo de diálogo personalizado e adicione um mapa de mensagens para processar as mensagens de CFindReplaceDialognotificação dos controles estendidos. Quaisquer mensagens não processadas devem ser passadas para a classe base.
Não é necessário personalizar a função de gancho.
Para obter mais informações sobre como usar o CFindReplaceDialog, consulte Classes de diálogo comuns.
Hierarquia de herança
CFindReplaceDialog
Requerimentos
Cabeçalho: afxdlgs.h
CFindReplaceDialog::CFindReplaceDialog
Constrói um objeto CFindReplaceDialog.
CFindReplaceDialog();
Observações
Como o CFindReplaceDialog objeto é uma caixa de diálogo sem moderação, você deve construí-lo na pilha usando o new operador .
Durante a destruição, a estrutura tenta executar um delete this; no ponteiro para a caixa de diálogo. Se você criou a caixa de diálogo na pilha, o this ponteiro não existe e o comportamento indefinido pode resultar.
Para obter mais informações sobre a construção de CFindReplaceDialog objetos, consulte a visão geral de CFindReplaceDialog . Use a função CFindReplaceDialog::Create member para exibir a caixa de diálogo.
Exemplo
// 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::Criar
Cria e exibe um objeto de caixa de diálogo Localizar ou Localizar/Substituir, dependendo do valor de bFindDialogOnly.
virtual BOOL Create(
BOOL bFindDialogOnly,
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
Parâmetros
bFindDialogOnly
Defina esse parâmetro como TRUE para exibir uma caixa de diálogo Localizar . Defina-o como FALSE para exibir uma caixa de diálogo Localizar/Substituir .
lpszFindO que
Ponteiro para a cadeia de pesquisa padrão quando a caixa de diálogo for exibida. Se NULL, a caixa de diálogo não contém uma cadeia de pesquisa padrão.
lpszReplaceWith
Ponteiro para a cadeia de caracteres de substituição padrão quando a caixa de diálogo for exibida. Se NULL, a caixa de diálogo não contém uma cadeia de caracteres de substituição padrão.
dwBandeiras
Um ou mais sinalizadores que você pode usar para personalizar as configurações da caixa de diálogo, combinados usando o operador bit a bit OR. O valor padrão é FR_DOWN, que especifica que a pesquisa deve prosseguir em uma direção descendente. Consulte a estrutura FINDREPLACE no SDK do Windows para obter mais informações sobre esses sinalizadores.
pParentWnd
Um ponteiro para a janela pai ou proprietário da caixa de diálogo. Esta é a janela que receberá a mensagem especial indicando que uma ação de localização/substituição é solicitada. Se NULL, a janela principal do aplicativo é usada.
Valor de retorno
Diferente de zero se o objeto da caixa de diálogo tiver sido criado com êxito; caso contrário, 0.
Observações
Para que a janela pai seja notificada sobre solicitações de localização/substituição, você deve usar a função RegisterWindowMessage do Windows, cujo valor de retorno é um número de mensagem exclusivo para a instância do aplicativo. Sua janela de quadro deve ter uma entrada de mapa de mensagem que declara a função de retorno de chamada (OnFindReplace no exemplo a seguir) que manipula essa mensagem registrada. O fragmento de código a seguir é um exemplo de como fazer isso para uma classe de janela de quadro chamada 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)
Dentro de sua OnFindReplace função, você interpreta as intenções do usuário usando os métodos CFindReplaceDialog::FindNext e CFindReplaceDialog::IsTerminating e cria o código para as operações de localização/substituição.
Exemplo
Consulte o exemplo de CFindReplaceDialog::CFindReplaceDialog.
CFindReplaceDialog::FindNext
Chame essa função de retorno de chamada para determinar se o usuário deseja encontrar a próxima ocorrência da cadeia de caracteres de pesquisa.
BOOL FindNext() const;
Valor de retorno
Diferente de zero se o usuário quiser encontrar a próxima ocorrência da cadeia de pesquisa; caso contrário, 0.
CFindReplaceDialog::GetFindString
Chame essa função da sua função de retorno de chamada para recuperar a cadeia de caracteres padrão para localizar.
CString GetFindString() const;
Valor de retorno
A cadeia de caracteres padrão a ser localizada.
Exemplo
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
Chame essa função para recuperar um ponteiro para a caixa de diálogo Localizar substituição atual.
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
Parâmetros
lParam
O valor lparam passado para a função de membro da janela do OnFindReplace quadro.
Valor de retorno
Um ponteiro para a caixa de diálogo atual.
Observações
Ele deve ser usado dentro de sua função de retorno de chamada para acessar a caixa de diálogo atual, chamar suas funções de membro e acessar a m_fr estrutura.
Exemplo
Consulte CFindReplaceDialog::Create para obter um exemplo de como registrar o manipulador OnFindReplace para receber notificações da caixa de diálogo Localizar substituição.
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
Chame essa função para recuperar a cadeia de caracteres de substituição atual.
CString GetReplaceString() const;
Valor de retorno
A cadeia de caracteres padrão com a qual substituir as cadeias de caracteres encontradas.
Exemplo
Consulte o exemplo de CFindReplaceDialog::GetFindString.
CFindReplaceDialog::IsTerminating
Chame essa função dentro de sua função de retorno de chamada para determinar se o usuário decidiu encerrar a caixa de diálogo.
BOOL IsTerminating() const;
Valor de retorno
Diferente de zero se o usuário decidiu encerrar a caixa de diálogo; caso contrário, 0.
Exemplo
Consulte o exemplo de CFindReplaceDialog::GetFindString.
CFindReplaceDialog::m_fr
Usado para personalizar um CFindReplaceDialog objeto.
FINDREPLACE m_fr;
Observações
m_fr é uma estrutura do tipo FINDREPLACE. Seus membros armazenam as características do objeto de caixa de diálogo. Depois de construir um CFindReplaceDialog objeto, você pode usar m_fr para modificar vários valores na caixa de diálogo.
Para obter mais informações sobre essa estrutura, consulte a FINDREPLACE estrutura no SDK do Windows.
Exemplo
Consulte o exemplo de CFindReplaceDialog::CFindReplaceDialog.
CFindReplaceDialog::MatchCase
Chame essa função para determinar se o usuário deseja corresponder exatamente ao caso da cadeia de caracteres de localização.
BOOL MatchCase() const;
Valor de retorno
Diferente de zero se o usuário quiser encontrar ocorrências da cadeia de pesquisa que correspondam exatamente ao caso da cadeia de pesquisa; caso contrário, 0.
CFindReplaceDialog::MatchWholeWord
Chame essa função para determinar se o usuário deseja corresponder apenas a palavras inteiras.
BOOL MatchWholeWord() const;
Valor de retorno
Diferente de zero se o usuário quiser corresponder apenas as palavras inteiras da cadeia de pesquisa; caso contrário, 0.
CFindReplaceDialog::ReplaceAll
Chame essa função para determinar se o usuário deseja que todas as ocorrências da cadeia de caracteres sejam substituídas.
BOOL ReplaceAll() const;
Valor de retorno
Diferente de zero se o usuário tiver solicitado que todas as cadeias de caracteres correspondentes à cadeia de substituição sejam substituídas; caso contrário, 0.
CFindReplaceDialog::ReplaceCurrent
Chame essa função para determinar se o usuário deseja que a palavra atual seja substituída.
BOOL ReplaceCurrent() const;
Valor de retorno
Diferente de zero se o usuário tiver solicitado que a cadeia de caracteres atualmente selecionada seja substituída pela cadeia de caracteres de substituição; caso contrário, 0.
CFindReplaceDialog::SearchDown
Chame essa função para determinar se o usuário deseja que a pesquisa prossiga em uma direção descendente.
BOOL SearchDown() const;
Valor de retorno
Diferente de zero se o usuário quiser que a pesquisa prossiga em uma direção descendente; 0 se o utilizador pretender que a pesquisa prossiga no sentido ascendente.