Partilhar via


CFindReplaceDialog Classe

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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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.

Ver também

CCommonDialog Classe
Gráfico de Hierarquia