Partilhar via


CEditView Classe

Um tipo de classe de exibição que fornece a funcionalidade de um controle de edição do Windows e pode ser usada para implementar a funcionalidade simples do editor de texto.

Sintaxe

class CEditView : public CCtrlView

Membros

Construtores Públicos

Nome Descrição
CEditView::CEditView Constrói um objeto do tipo CEditView.

Métodos Públicos

Nome Descrição
CEditView::FindText Procura uma cadeia de caracteres dentro do texto.
CEditView::GetBufferLength Obtém o comprimento do buffer de caracteres.
CEditView::GetEditCtrl Fornece acesso à CEdit parte de um CEditView objeto (o controle de edição do Windows).
CEditView::GetPrinterFont Recupera a fonte atual da impressora.
CEditView::GetSelectedText Recupera a seleção de texto atual.
CEditView::LockBuffer Bloqueia o buffer.
CEditView::P rintInsideRect Renderiza texto dentro de um determinado retângulo.
CEditView::SerializeRaw Serializa um CEditView objeto para disco como texto bruto.
CEditView::SetPrinterFont Define uma nova fonte da impressora.
CEditView::SetTabStops Define paradas de tabulação para exibição de tela e impressão.
CEditView::UnlockBuffer Desbloqueia o buffer.

Métodos Protegidos

Nome Descrição
CEditView::OnFindNext Localiza a próxima ocorrência de uma cadeia de caracteres de texto.
CEditView::OnReplaceAll Substitui todas as ocorrências de uma determinada cadeia de caracteres por uma nova cadeia de caracteres.
CEditView::OnReplaceSel Substitui a seleção atual.
CEditView::OnTextNotFound Chamado quando uma operação de localização não corresponde a nenhum outro texto.

Membros de Dados Públicos

Nome Descrição
CEditView::d wStyleDefault Estilo padrão para objetos do tipo CEditView.

Observações

A CEditView classe fornece as seguintes funções adicionais:

  • Imprimir.

  • Localizar e substituir.

Como class CEditView é um derivado de class CView, objetos de class CEditView podem ser usados com documentos e modelos de documento.

O texto de cada CEditView controle é mantido em seu próprio objeto de memória global. Seu aplicativo pode ter qualquer número de CEditView objetos.

Crie objetos do tipo CEditView se quiser uma janela de edição com a funcionalidade adicionada listada acima ou se quiser uma funcionalidade simples de editor de texto. Um CEditView objeto pode ocupar toda a área do cliente de uma janela. Derive suas próprias classes para adicionar ou modificar a funcionalidade básica ou para declarar classes que podem ser adicionadas a um modelo de CEditView documento.

A implementação padrão da classe CEditView lida com os seguintes comandos: ID_EDIT_SELECT_ALL, ID_EDIT_FIND, ID_EDIT_REPLACE, ID_EDIT_REPEAT e ID_FILE_PRINT.

O limite de caracteres padrão para CEditView é (1024 * 1024 - 1 = 1048575). Isso pode ser alterado chamando a função EM_LIMITTEXT do controle de edição subjacente. No entanto, os limites são diferentes dependendo do sistema operacional e do tipo de controle de edição (linha única ou multilinha). Para obter mais informações sobre esses limites, consulte EM_LIMITTEXT.

Para alterar esse limite em seu controle, substitua a OnCreate() função para sua CEditView classe e insira a seguinte linha de código:

GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit

Objetos do tipo CEditView (ou de tipos derivados de CEditView) têm as seguintes limitações:

  • CEditView não implementa verdadeiro o que você vê é o que você obtém (WYSIWYG) edição. Quando existe uma escolha entre a legibilidade no ecrã e a saída impressa correspondente, CEditView opta pela legibilidade do ecrã.

  • CEditView pode exibir texto em apenas uma única fonte. Não há suporte para formatação de caracteres especiais. Consulte a classe CRichEditView para obter mais recursos.

  • A quantidade de texto que uma lata CEditView pode conter é limitada. Os limites são os mesmos do CEdit controlo.

Para obter mais informações sobre CEditViewo , consulte Classes de exibição derivadas disponíveis no MFC.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CView

CCtrlView

CEditView

Requerimentos

Cabeçalho: afxext.h

CEditView::CEditView

Constrói um objeto do tipo CEditView.

CEditView();

Observações

Depois de construir o objeto, você deve chamar a função CWnd::Create antes que o controle de edição seja usado. Se você derivar uma classe e CEditView adicioná-la ao modelo usando CWinApp::AddDocTemplate, a estrutura chamará esse construtor e a Create função.

CEditView::d wStyleDefault

Contém o CEditView estilo padrão do objeto.

static const DWORD dwStyleDefault;

Observações

Passe esse membro estático como o parâmetro dwStyle da Create função para obter o estilo padrão para o CEditView objeto.

CEditView::FindText

Chame a FindText função para pesquisar o CEditView buffer de texto do objeto.

BOOL FindText(
    LPCTSTR lpszFind,
    BOOL bNext = TRUE,
    BOOL bCase = TRUE);

Parâmetros

lpszEncontrar
O texto a ser encontrado.

bSeguinte
Especifica a direção da pesquisa. Se TRUE, a direção da pesquisa está no final do buffer. Se FALSE, a direção da pesquisa é no início do buffer.

bCaso
Especifica se a pesquisa diferencia maiúsculas de minúsculas. Se TRUE, a pesquisa diferencia maiúsculas de minúsculas. Se FALSE, a pesquisa não diferencia maiúsculas de minúsculas.

Valor de retorno

Diferente de zero se o texto da pesquisa for encontrado; caso contrário, 0.

Observações

Esta função procura o texto no buffer para o texto especificado por lpszFind, começando na seleção atual, na direção especificada por bNext e com a diferenciação de maiúsculas e minúsculas especificada por bCase. Se o texto for encontrado, ele define a seleção para o texto encontrado e retorna um valor diferente de zero. Se o texto não for encontrado, a função retornará 0.

Você normalmente não precisa chamar a função, a menos que você substitua FindTextOnFindNext, que chama FindText.

CEditView::GetBufferLength

Chame essa função de membro para obter o número de caracteres atualmente no buffer do controle de edição, não incluindo o terminador nulo.

UINT GetBufferLength() const;

Valor de retorno

O comprimento da cadeia de caracteres no buffer.

CEditView::GetEditCtrl

Ligue GetEditCtrl para obter uma referência ao controle de edição usado pelo modo de exibição de edição.

CEdit& GetEditCtrl() const;

Valor de retorno

Uma referência a um objeto CEdit.

Observações

Esse controle é do tipo CEdit, para que você possa manipular o controle de edição do Windows diretamente usando as CEdit funções de membro.

Atenção

O uso do CEdit objeto pode alterar o estado do controle de edição subjacente do Windows. Por exemplo, você não deve alterar as configurações da guia usando a função CEdit::SetTabStops porque CEditView armazena em cache essas configurações para uso tanto no controle de edição quanto na impressão. Em vez disso, use CEditView::SetTabStops.

Exemplo

void CMyEditView::OnInitialUpdate()
{
   CEditView::OnInitialUpdate();

   // get the edit control and set some initial properties for it
   CEdit &theEdit = GetEditCtrl();

   // adjust the left margin without changing the right margin
   DWORD dwMargins = theEdit.GetMargins();
   theEdit.SetMargins(20, HIWORD(dwMargins));

   // only accept 10k of text
   theEdit.SetLimitText(10 * 1024);
}

CEditView::GetPrinterFont

Chamada GetPrinterFont para obter um ponteiro para um objeto CFont que descreve a fonte da impressora atual.

CFont* GetPrinterFont() const;

Valor de retorno

Um ponteiro para um CFont objeto que especifica a fonte atual da impressora; NULL se a fonte da impressora não tiver sido definida. O ponteiro pode ser temporário e não deve ser armazenado para uso posterior.

Observações

Se a fonte da impressora não tiver sido definida, o comportamento de impressão padrão da CEditView classe é imprimir usando a mesma fonte usada para exibição.

Use esta função para determinar a fonte atual da impressora. Se não for a fonte de impressora desejada, use CEditView::SetPrinterFont para alterá-la.

CEditView::GetSelectedText

Chamada GetSelectedText para copiar o texto selecionado em um CString objeto, até o final da seleção ou o caractere que precede o primeiro caractere de retorno de carro na seleção.

void GetSelectedText(CString& strResult) const;

Parâmetros

strResult
Uma referência ao CString objeto que deve receber o texto selecionado.

CEditView::LockBuffer

Chame essa função de membro para obter um ponteiro para o buffer. O buffer não deve ser modificado.

LPCTSTR LockBuffer() const;

Valor de retorno

Um ponteiro para o buffer do controle de edição.

CEditView::OnFindNext

Pesquisa o texto no buffer para o texto especificado por lpszFind, na direção especificada por bNext, com diferenciação de maiúsculas e minúsculas especificada por bCase.

virtual void OnFindNext(
    LPCTSTR lpszFind,
    BOOL bNext,
    BOOL bCase);

Parâmetros

lpszEncontrar
O texto a ser encontrado.

bSeguinte
Especifica a direção da pesquisa. Se TRUE, a direção da pesquisa está no final do buffer. Se FALSE, a direção da pesquisa é no início do buffer.

bCaso
Especifica se a pesquisa diferencia maiúsculas de minúsculas. Se TRUE, a pesquisa diferencia maiúsculas de minúsculas. Se FALSE, a pesquisa não diferencia maiúsculas de minúsculas.

Observações

A pesquisa começa no início da seleção atual e é realizada através de uma chamada para FindText. Na implementação padrão, OnFindNext chama OnTextNotFound se o texto não for encontrado.

Substituir OnFindNext para alterar a maneira como um CEditViewobjeto derivado pesquisa texto. CEditView chamadas OnFindNext quando o usuário escolhe o botão Localizar próximo na caixa de diálogo Localizar padrão.

CEditView::OnReplaceAll

CEditView chamadas OnReplaceAll quando o usuário seleciona o botão Substituir tudo na caixa de diálogo padrão Substituir.

virtual void OnReplaceAll(
    LPCTSTR lpszFind,
    LPCTSTR lpszReplace,
    BOOL bCase);

Parâmetros

lpszEncontrar
O texto a ser encontrado.

lpszSubstituir
O texto para substituir o texto de pesquisa.

bCaso
Especifica se a pesquisa diferencia maiúsculas de minúsculas. Se TRUE, a pesquisa diferencia maiúsculas de minúsculas. Se FALSE, a pesquisa não diferencia maiúsculas de minúsculas.

Observações

OnReplaceAll pesquisa o texto no buffer para o texto especificado por lpszFind, com diferenciação de maiúsculas e minúsculas especificada por bCase. A pesquisa começa no início da seleção atual. Cada vez que o texto de pesquisa é encontrado, esta função substitui essa ocorrência do texto com o texto especificado por lpszReplace. A pesquisa é realizada através de uma chamada para FindText. Na implementação padrão, OnTextNotFound é chamado se o texto não for encontrado.

Se a seleção atual não corresponder a lpszFind, a seleção será atualizada para a primeira ocorrência do texto especificado por lpszFind e uma substituição não será executada. Isso permite que o usuário confirme que é isso que deseja fazer quando a seleção não corresponde ao texto a ser substituído.

Substituir OnReplaceAll para alterar a maneira como um CEditViewobjeto derivado substitui o texto.

CEditView::OnReplaceSel

CEditView chamadas OnReplaceSel quando o usuário seleciona o botão Substituir na caixa de diálogo padrão Substituir.

virtual void OnReplaceSel(
    LPCTSTR lpszFind,
    BOOL bNext,
    BOOL bCase,
    LPCTSTR lpszReplace);

Parâmetros

lpszEncontrar
O texto a ser encontrado.

bSeguinte
Especifica a direção da pesquisa. Se TRUE, a direção da pesquisa está no final do buffer. Se FALSE, a direção da pesquisa é no início do buffer.

bCaso
Especifica se a pesquisa diferencia maiúsculas de minúsculas. Se TRUE, a pesquisa diferencia maiúsculas de minúsculas. Se FALSE, a pesquisa não diferencia maiúsculas de minúsculas.

lpszSubstituir
O texto para substituir o texto encontrado.

Observações

Depois de substituir a seleção, esta função pesquisa o texto no buffer para a próxima ocorrência do texto especificado por lpszFind, na direção especificada por bNext, com diferenciação de maiúsculas e minúsculas especificada por bCase. A pesquisa é realizada através de uma chamada para FindText. Se o texto não for encontrado, OnTextNotFound será chamado.

Substituir OnReplaceSel para alterar a maneira como um CEditViewobjeto derivado substitui o texto selecionado.

CEditView::OnTextNotFound

Substitua essa função para alterar a implementação padrão, que chama a função MessageBeepdo Windows .

virtual void OnTextNotFound(LPCTSTR lpszFind);

Parâmetros

lpszEncontrar
O texto a ser encontrado.

CEditView::P rintInsideRect

Chamada PrintInsideRect para imprimir texto no retângulo especificado por rectLayout.

UINT PrintInsideRect(
    CDC *pDC,
    RECT& rectLayout,
    UINT nIndexStart,
    UINT nIndexStop);

Parâmetros

pDC
Ponteiro para o contexto do dispositivo da impressora.

rectLayout
Referência a um objeto CRect ou estrutura RECT especificando o retângulo no qual o texto deve ser renderizado.

nIndexStart
Índice dentro do buffer do primeiro caractere a ser renderizado.

nIndexStop
Índice dentro do buffer do caractere após o último caractere a ser renderizado.

Valor de retorno

O índice do próximo caractere a ser impresso (ou seja, o caractere após o último caractere renderizado).

Observações

Se o CEditView controle não tiver o estilo ES_AUTOHSCROLL, o texto será quebrado dentro do retângulo de renderização. Se o controle tiver o estilo ES_AUTOHSCROLL, o texto será cortado na borda direita do retângulo.

O rect.bottom elemento do objeto rectLayout é alterado para que as dimensões do retângulo definam a parte do retângulo original que é ocupada pelo texto.

CEditView::SerializeRaw

Chamada SerializeRaw para que um CArchive objeto leia ou grave o CEditView texto no objeto em um arquivo de texto.

void SerializeRaw(CArchive& ar);

Parâmetros

RA
Referência ao CArchive objeto que armazena o texto serializado.

Observações

SerializeRaw difere da CEditViewimplementação interna do na medida em que lê e escreve apenas o texto, sem dados de descrição de Serialize objeto anteriores.

CEditView::SetPrinterFont

Ligue SetPrinterFont para definir a fonte da impressora para a fonte especificada por pFont.

void SetPrinterFont(CFont* pFont);

Parâmetros

pFonte
Um ponteiro para um objeto do tipo CFont. Se NULL, a fonte usada para impressão é baseada na fonte de exibição.

Observações

Se pretender que a sua vista utilize sempre um tipo de letra específico para impressão, inclua uma chamada para SetPrinterFont na função da OnPreparePrinting sua turma. Esta função virtual é chamada antes da impressão ocorrer, de modo que a alteração da fonte ocorre antes que o conteúdo da exibição seja impresso.

CEditView::SetTabStops

Chame essa função para definir as paradas de tabulação usadas para exibição e impressão.

void SetTabStops(int nTabStops);

Parâmetros

nTabStops
Largura de cada parada de tabulação, em unidades de diálogo.

Observações

Apenas uma única largura de tabulação é suportada. CEdit( Os objetos suportam várias larguras de tabulação.) As larguras estão em unidades de diálogo, que equivalem a um quarto da largura média de caracteres (com base apenas em caracteres alfabéticos maiúsculos e minúsculos) da fonte usada no momento da impressão ou exibição. Você não deve usar CEdit::SetTabStops porque CEditView deve armazenar em cache o valor de parada de tabulação.

Esta função modifica apenas as guias do objeto para o qual é chamada. Para alterar as paradas de tabulação para cada CEditView objeto em seu aplicativo, chame a função de SetTabStops cada objeto.

Exemplo

Este fragmento de código define as paradas de tabulação no controle para cada quarto caractere, medindo cuidadosamente a fonte que o controle usa.

// gain a reference to the edit control
CEdit &theEdit = GetEditCtrl();

// get the font the control is using
CFont *pFont = theEdit.GetFont();
TEXTMETRIC tm;

// get the control's DC, too
CDC *pDC = theEdit.GetDC();

// Select the font that the control uses by default into the DC.
// We must do this because the control may or may not be using
// that font at this exact moment
CFont *pOldFont = pDC->SelectObject(pFont);

// Retrieve text metrics for that font and return the previously
// selected font.
pDC->GetTextMetrics(&tm);
pDC->SelectObject(pOldFont);

// Get an identity rectangle and map it to dialog units
CRect rect(0, 0, 100, 1);
::MapDialogRect((HWND)this, rect);

// We now know that 100 dialog units are rect.Width() screen units,
// so we can multiply screen units by 100 and divide by rect.Width()
// to find dialog units from screen units. tm.tmAveCharWidth is
// the width of _one_ character, so setting the tabs at every
// four characters means we also multiply by four.
SetTabStops((4 * tm.tmAveCharWidth * 100) / rect.Width());

CEditView::UnlockBuffer

Chame essa função de membro para desbloquear o buffer.

void UnlockBuffer() const;

Observações

Ligue UnlockBuffer depois de terminar de usar o ponteiro retornado por LockBuffer.

Ver também

MFC Exemplo SUPERPAD
Classe CCtrlView
Gráfico de Hierarquia
Classe CEdit
CDocument Classe
CDocTemplate Classe
Classe CCtrlView
CRichEditView Classe