Compartilhar via


Classe CView

Fornece a funcionalidade básica para classes de exibição definidas pelo usuário.

Sintaxe

class AFX_NOVTABLE CView : public CWnd

Membros

Construtores Protegidos

Nome Descrição
CView::CView Constrói um objeto CView.

Métodos públicos

Nome Descrição
CView::DoPreparePrinting Exibe a caixa de diálogo Imprimir e cria o contexto do dispositivo de impressora; chame-o ao substituir a função membro OnPreparePrinting.
CView::GetDocument Retorna o documento associado à exibição.
CView::IsSelected Testa se um item de documento está selecionado. Exigido para o suporte a OLE.
CView::OnDragEnter Chamado quando um item é arrastado pela primeira vez para a região de arrastar e soltar de uma exibição.
CView::OnDragLeave Chamado quando um item arrastado deixa a região de arrastar e soltar de uma exibição.
CView::OnDragOver Chamado quando um item é arrastado sobre a região de arrastar e soltar de uma exibição.
CView::OnDragScroll Chamado para determinar se o cursor é arrastado para a área de rolagem da janela.
CView::OnDrop Chamado quando um item foi solto na região de arrastar e soltar de uma exibição, manipulador padrão.
CView::OnDropEx Chamado quando um item foi solto na região de arrastar e soltar de uma exibição, manipulador primário.
CView::OnInitialUpdate Chamado depois que uma exibição é anexada pela primeira vez a um documento.
CView::OnPrepareDC Chamado antes que a função membro OnDraw seja chamada para exibição de tela ou a função membro OnPrint seja chamada para impressão ou visualização de impressão.
CView::OnScroll Chamado quando os itens OLE são arrastados para além das bordas da exibição.
CView::OnScrollBy Chamado quando o usuário realiza rolagem em uma exibição que contém itens OLE ativos no local.

Métodos protegidos

Nome Descrição
CView::OnActivateFrame Chamado quando a janela de quadro que contém a exibição é ativada ou desativada.
CView::OnActivateView Chamado quando uma exibição é ativada.
CView::OnBeginPrinting Chamado quando um trabalho de impressão é iniciado; substitua para alocar recursos de GDI (Graphics Device Interface).
CView::OnDraw Chamado para renderizar uma imagem do documento para exibição de tela, impressão ou visualização de impressão. Implementação exigida.
CView::OnEndPrinting Chamado quando um trabalho de impressão termina; substitua para desalocar recursos de GDI.
CView::OnEndPrintPreview Chamado quando o modo de visualização é encerrado.
CView::OnPreparePrinting Chamado antes de um documento ser impresso ou visualizado; substitua para inicializar a caixa de diálogo Imprimir.
CView::OnPrint Chamado para imprimir ou visualizar uma página do documento.
CView::OnUpdate Chamado para notificar uma exibição de que o documento dela foi modificado.

Comentários

Uma exibição é anexada a um documento e atua como um intermediário entre o documento e o usuário: a exibição renderiza uma imagem do documento na tela ou impressora e interpreta a entrada de usuário como operações no documento.

Uma exibição é um filho de uma janela de quadro. Uma janela de quadro pode ser compartilhada por mais de uma exibição, como no caso de uma janela divisora. A relação entre uma classe de exibição, uma classe de janela de quadro e uma classe de documento é estabelecida por um objeto CDocTemplate. Quando o usuário abre uma nova janela ou divide uma existente, a estrutura constrói uma nova exibição e a anexa ao documento.

Uma exibição pode ser anexada a apenas um documento, mas um documento pode ter várias exibições anexadas a ele de uma só vez, por exemplo, se o documento for exibido em uma janela divisora ou em várias janelas filho em um aplicativo MDI (interface de documento múltiplo). Seu aplicativo pode dar suporte a diferentes tipos de exibições para um determinado tipo de documento; por exemplo, um programa de processamento de palavras pode fornecer uma exibição de texto completa de um documento e uma exibição de estrutura de tópicos que mostra apenas os títulos de cada seção. Esses diferentes tipos de exibição poderão ser colocados em janelas de quadro separadas ou em painéis separados de apenas uma janela de quadro, se você usar uma janela divisora.

Uma exibição pode ser responsável por lidar com vários tipos diferentes de entrada, como entrada de teclado, entrada do mouse ou entrada por meio de arrastar e soltar, bem como comandos de menus, barras de ferramentas ou barras de rolagem. Uma exibição recebe comandos encaminhados pela janela de quadro. Se a exibição não manipular um determinado comando, ela encaminhará o comando para o documento associado. Como todos os destinos de comando, uma exibição manipula mensagens por meio de um mapa de mensagens.

A exibição é responsável por exibir e modificar os dados do documento, mas não por armazená-los. O documento fornece os detalhes necessários sobre os dados dele à exibição. Você pode permitir que a exibição acesse diretamente os membros de dados do documento ou forneça funções membro na classe de documento para a classe de exibição a ser chamada.

Quando os dados de um documento são alterados, a exibição responsável pelas alterações normalmente chama a função CDocument::UpdateAllViews para o documento, o que notifica todas as outras exibições chamando a função membro OnUpdate para cada um. A implementação padrão deOnUpdate invalida toda a área de cliente da exibição. Você pode substituí-la para invalidar apenas as regiões da área de cliente que são mapeadas para as partes modificadas do documento.

Para usar CView, derive uma classe dela e implemente a função membro OnDraw para executar a exibição da tela. Você também pode usar OnDraw para executar a impressão e a visualização de impressão. A estrutura manipula o loop de impressão para imprimir e visualizar seu documento.

Uma exibição manipula mensagens de barra de rolagem com as funções membro CWnd::OnHScroll e CWnd::OnVScroll. Você pode implementar a manipulação de mensagens da barra de rolagem nessas funções ou pode usar a classe derivada CScrollView de CView para manipular a rolagem para você.

Além de CScrollView, a biblioteca Microsoft Foundation Class fornece várias classes derivadas de CView:

  • CCtrlView, uma exibição que permite o uso de documentos – arquitetura de exibição com controles de árvore, lista e edição avançada.

  • CDaoRecordView, uma exibição que mostra registros de banco de dados em controles de caixa de diálogo.

  • CEditView, uma exibição que fornece um editor de texto multilinha simples. Você pode usar um objeto CEditView como um controle em uma caixa de diálogo, bem como uma exibição em um documento.

  • CFormView, uma exibição rolável que contém controles de caixa de diálogo e se baseia em um recurso de modelo de caixa de diálogo.

  • CListView, uma exibição que permite o uso do documento – arquitetura de exibição com controles de lista.

  • CRecordView, uma exibição que mostra registros de banco de dados em controles de caixa de diálogo.

  • CRichEditView, uma exibição que permite o uso do documento – arquitetura de exibição com controles de edição avançada.

  • CScrollView, uma exibição que fornece suporte à rolagem automaticamente.

  • CTreeView, uma exibição que permite o uso do documento – arquitetura de exibição com controles de árvore.

A classe CView também tem uma classe de implementação derivada chamada CPreviewView, que é usada pela estrutura para executar a visualização de impressão. Essa classe oferece suporte para os recursos exclusivos para a janela de visualização de impressão, como uma barra de ferramentas, visualização de página única ou dupla e zoom, ou seja, ampliando a imagem visualizada. Você não precisa chamar nem substituir nenhuma das funções membro de CPreviewView, a menos que deseje implementar uma interface própria para visualização de impressão (por exemplo, se quiser dar suporte à edição no modo de visualização de impressão). Para obter mais informações sobre como usar CView, confira Arquitetura de documento/exibição e Impressão. Além disso, confira a Nota Técnica 30 para obter mais detalhes sobre como personalizar a visualização de impressão.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CView

Requisitos

Cabeçalho: afxwin.h

CView::CView

Constrói um objeto CView.

CView();

Comentários

A estrutura chama o construtor quando uma nova janela de quadro é criada ou uma janela é dividida. Substitua a função membro OnInitialUpdate para inicializar a exibição depois que o documento for anexado.

CView::DoPreparePrinting

Chame essa função da sua substituição de OnPreparePrinting para invocar a caixa de diálogo Imprimir e criar um contexto de dispositivo de impressora.

BOOL DoPreparePrinting(CPrintInfo* pInfo);

Parâmetros

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual.

Valor de retorno

Diferente de zero se a visualização de impressão ou impressão puder começar; 0 se a operação tiver sido cancelada.

Comentários

O comportamento dessa função depende se ela está sendo chamada para impressão ou visualização de impressão (especificada pelo membro m_bPreview do parâmetro pInfo). Se um arquivo estiver sendo impresso, essa função invocará a caixa de diálogo Imprimir, usando os valores na estrutura CPrintInfo para a qual pInfo aponta; depois que o usuário fechar a caixa de diálogo, a função criará um contexto de dispositivo de impressora com base nas configurações especificadas pelo usuário na caixa de diálogo e retornará esse contexto de dispositivo por meio do parâmetro pInfo. Esse contexto de dispositivo é usado para imprimir o documento.

Se um arquivo estiver sendo visualizado, essa função criará um contexto de dispositivo de impressora usando as configurações atuais da impressora; este contexto de dispositivo é usado para simular a impressora durante a visualização.

CView::GetDocument

Chame essa função para obter um ponteiro para o documento da exibição.

CDocument* GetDocument() const;

Valor de retorno

Um ponteiro para o objeto CDocument associado à exibição. NULL se a exibição não estiver anexada a um documento.

Comentários

Isso permite que você chame as funções membro do documento.

CView::IsSelected

Chamado pela estrutura para verificar se o item de documento especificado está selecionado.

virtual BOOL IsSelected(const CObject* pDocItem) const;

Parâmetros

pDocItem
Aponta para o item do documento que está sendo testado.

Valor de retorno

Diferente de zero se o item de documento especificado estiver selecionado; caso contrário, 0.

Comentários

A implementação padrão dessa função retorna FALSE. Substitua essa função se você estiver implementando a seleção usando objetos CDocItem. Você precisa substituir essa função se a exibição contiver itens OLE.

CView::OnActivateFrame

Chamado pela estrutura quando a janela de quadro que contém a exibição é ativada ou desativada.

virtual void OnActivateFrame(
    UINT nState,
    CFrameWnd* pFrameWnd);

Parâmetros

nState
Especifica se a janela do quadro está sendo ativada ou desativada. Pode ser um dos seguintes valores:

  • WA_INACTIVE A janela de quadro está sendo desativada.

  • WA_ACTIVE A janela de quadro está sendo ativada por meio de algum método diferente de um clique do mouse (por exemplo, usando a interface do teclado para selecionar a janela).

  • WA_CLICKACTIVE A janela de quadro está sendo ativada por um clique do mouse

pFrameWnd
Ponteiro para a janela de quadro que deve ser ativada.

Comentários

Substitua essa função membro se você quiser executar o processamento especial quando a janela de quadro associada à exibição for ativada ou desativada. Por exemplo, CFormView executa essa substituição quando salva e restaura o controle que tem foco.

CView::OnActivateView

Chamado pela estrutura quando uma exibição é ativada ou desativada.

virtual void OnActivateView(
    BOOL bActivate,
    CView* pActivateView,
    CView* pDeactiveView);

Parâmetros

bActivate
Indica se a exibição está sendo ativada ou desativada.

pActivateView
Aponta para o objeto de exibição que está sendo ativado.

pDeactiveView
Aponta para o objeto de exibição que está sendo desativado.

Comentários

A implementação padrão dessa função define o foco para a exibição que está sendo ativada. Substitua essa função se você quiser executar processamento especial quando uma exibição for ativada ou desativada. Por exemplo, se você quiser fornecer indicações visuais especiais que distinguem a exibição ativa das exibições inativas, examine o parâmetro bActivate e atualize a aparência da exibição adequadamente.

Os parâmetros pActivateView e pDeactiveView apontarão para a mesma exibição se a janela de quadro principal do aplicativo for ativada sem nenhuma alteração na exibição ativa, por exemplo, se o foco estiver sendo transferido de outro aplicativo para este, não de uma exibição para outra dentro do aplicativo nem ao alternar entre janelas filho MDI. Isso permite que uma exibição cumpra novamente a própria paleta, se necessário.

Esses parâmetros diferem quando CFrameWnd::SetActiveView é chamado com uma exibição diferente do que CFrameWnd::GetActiveView retornaria. Isso acontece com mais frequência com janelas divisoras.

CView::OnBeginPrinting

Chamado pela estrutura no início de um trabalho de visualização de impressão ou impressão, depois de OnPreparePrinting ter sido chamado.

virtual void OnBeginPrinting(
    CDC* pDC,
    CPrintInfo* pInfo);

Parâmetros

pDC
Aponta para o contexto do dispositivo de impressora.

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual.

Comentários

A implementação padrão dessa função não faz nada. Substitua essa função para alocar todos os recursos de GDI, como canetas ou fontes, necessários especificamente para impressão. Selecione os objetos GDI no contexto do dispositivo de dentro da função membro OnPrint para cada página que os usa. Se você estiver usando o mesmo objeto de exibição para executar exibição e impressão de tela, use variáveis separadas para os recursos de GDI necessários para cada exibição; isso permite que você atualize a tela durante a impressão.

Você também pode usar essa função para executar inicializações que dependem das propriedades do contexto do dispositivo de impressora. Por exemplo, o número de páginas necessárias para imprimir o documento pode depender das configurações especificadas pelo usuário na caixa de diálogo Imprimir (como comprimento da página). Nessa situação, você não pode especificar o comprimento do documento na função membro OnPreparePrinting, onde normalmente você faria isso; você precisa aguardar até que o contexto do dispositivo de impressora tenha sido criado com base nas configurações da caixa de diálogo. OnBeginPrinting é a primeira função substituível que lhe dá acesso ao objeto CDC que representa o contexto do dispositivo de impressora, para que você possa definir o comprimento do documento por meio dessa função. Observe que, se o comprimento do documento não foi especificado até o momento, uma barra de rolagem não é exibida durante a visualização de impressão.

CView::OnDragEnter

Chamado pela estrutura quando o mouse entra pela primeira vez na região de não rolagem da janela de destino da ação de soltar.

virtual DROPEFFECT OnDragEnter(
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parâmetros

pDataObject
Aponta para o COleDataObject sendo arrastado para a área de soltar da exibição.

dwKeyState
Contém o estado das teclas modificadoras. Essa é uma combinação de qualquer um dos seguintes números: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

point
A posição atual do mouse em relação à área de cliente da exibição.

Valor de retorno

Um valor do tipo enumerado DROPEFFECT, que indica o tipo de soltura que ocorreria se o usuário soltasse o objeto nessa posição. O tipo de soltura geralmente depende do estado atual da tecla indicado por dwKeyState. Um mapeamento padrão de estados de tecla para valores de DROPEFFECT é:

  • DROPEFFECT_NONE O objeto de dados não pode ser solto nesta janela.

  • DROPEFFECT_LINK para MK_CONTROL|MK_SHIFT Cria uma vinculação entre o objeto e o respectivo servidor.

  • DROPEFFECT_COPY para MK_CONTROL Cria uma cópia do objeto que foi solto.

  • DROPEFFECT_MOVE para MK_ALT Cria uma cópia do objeto que foi solto e exclui o objeto original. Normalmente, esse é o efeito padrão da ação de soltar, quando a exibição pode aceitar esse objeto de dados.

Para obter mais informações, confira o exemplo OCLIENT de conceitos avançados do MFC.

Comentários

A implementação padrão não deve realizar nenhuma ação, exceto retornar DROPEFFECT_NONE.

Substitua essa função para se preparar para chamadas futuras para a função membro OnDragOver. Todos os dados necessários do objeto de dados devem ser recuperados neste momento para uso posterior na função membro OnDragOver. A exibição também deve ser atualizada neste momento para fornecer comentários visuais ao usuário. Para obter mais informações, confira o artigo OLE arrastar e soltar: implementar um destino da ação de soltar.

CView::OnDragLeave

Chamado pela estrutura durante uma operação de arrastar quando o mouse é movido para fora da área de soltar válida para essa janela.

virtual void OnDragLeave();

Comentários

Substitua essa função se a exibição atual precisar limpar todas as ações executadas durante chamadas OnDragEnter ou OnDragOver, como a remoção de qualquer comentário visual do usuário enquanto o objeto foi arrastado e solto.

CView::OnDragOver

Chamado pela estrutura durante uma operação de arrastar quando o mouse é movido pela janela de destino para soltar.

virtual DROPEFFECT OnDragOver(
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parâmetros

pDataObject
Aponta para o COleDataObject sendo arrastado sobre o destino da ação de soltar.

dwKeyState
Contém o estado das teclas modificadoras. Essa é uma combinação de qualquer um dos seguintes números: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

point
A posição atual do mouse em relação à área de cliente da exibição.

Valor de retorno

Um valor do tipo enumerado DROPEFFECT, que indica o tipo de soltura que ocorreria se o usuário soltasse o objeto nessa posição. O tipo de soltura geralmente depende do estado atual da tecla indicado por dwKeyState. Um mapeamento padrão de estados de tecla para valores de DROPEFFECT é:

  • DROPEFFECT_NONE O objeto de dados não pode ser solto nesta janela.

  • DROPEFFECT_LINK para MK_CONTROL|MK_SHIFT Cria uma vinculação entre o objeto e o respectivo servidor.

  • DROPEFFECT_COPY para MK_CONTROL Cria uma cópia do objeto que foi solto.

  • DROPEFFECT_MOVE para MK_ALT Cria uma cópia do objeto que foi solto e exclui o objeto original. Normalmente, esse é o efeito padrão da ação de soltar, quando a exibição pode aceitar o objeto de dados.

Para obter mais informações, confira o exemplo OCLIENT de conceitos avançados do MFC.

Comentários

A implementação padrão não deve realizar nenhuma ação, exceto retornar DROPEFFECT_NONE.

Substitua essa função para fornecer comentários visuais ao usuário durante a operação de arrastar. Como essa função é chamada continuamente, qualquer código contido nela deve ser otimizado o máximo possível. Para obter mais informações, confira o artigo OLE arrastar e soltar: implementar um destino da ação de soltar.

CView::OnDragScroll

Chamado pela estrutura antes de chamar OnDragEnter ou OnDragOver para determinar se o ponto está na área de rolagem.

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

Parâmetros

dwKeyState
Contém o estado das teclas modificadoras. Essa é uma combinação de qualquer um dos seguintes números: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

point
Contém o local do cursor, em pixels, em relação à tela.

Valor de retorno

Um valor do tipo enumerado DROPEFFECT, que indica o tipo de soltura que ocorreria se o usuário soltasse o objeto nessa posição. O tipo de soltura geralmente depende do estado atual da tecla indicado por dwKeyState. Um mapeamento padrão de estados de tecla para valores de DROPEFFECT é:

  • DROPEFFECT_NONE O objeto de dados não pode ser solto nesta janela.

  • DROPEFFECT_LINK para MK_CONTROL|MK_SHIFT Cria uma vinculação entre o objeto e o respectivo servidor.

  • DROPEFFECT_COPY para MK_CONTROL Cria uma cópia do objeto que foi solto.

  • DROPEFFECT_MOVE para MK_ALT Cria uma cópia do objeto que foi solto e exclui o objeto original.

  • DROPEFFECT_SCROLL Indica que uma operação de rolar e arrastar está prestes a ocorrer ou está ocorrendo na exibição de destino.

Para obter mais informações, confira o exemplo OCLIENT de conceitos avançados do MFC.

Comentários

Substitua essa função quando quiser fornecer um comportamento especial para esse evento. A implementação padrão rola janelas automaticamente quando o cursor é arrastado para a região de rolagem padrão dentro da borda de cada janela. Para obter mais informações, confira o artigo OLE arrastar e soltar: implementar um destino da ação de soltar.

CView::OnDraw

Chamado pela estrutura para renderizar uma imagem do documento.

virtual void OnDraw(CDC* pDC) = 0;

Parâmetros

pDC
Aponta para o contexto do dispositivo a ser usado para renderizar uma imagem do documento.

Comentários

A estrutura chama essa função para executar exibição de tela, impressão e visualização de impressão e passa um contexto de dispositivo diferente em cada caso. Não há implementação padrão.

Você precisa substituir essa função para exibir a sua exibição do documento. Você pode fazer chamadas à GDI (Graphics Device Interface) usando o objeto CDC apontado pelo parâmetro pDC. Você pode selecionar recursos de GDI, como canetas ou fontes, no contexto do dispositivo antes de desenhar e desmarcá-los posteriormente. Geralmente, o código de desenho pode ser independente do dispositivo; ou seja, ele não exige informações sobre qual tipo de dispositivo está exibindo a imagem.

Para otimizar o desenho, chame a função membro RectVisible do contexto do dispositivo para descobrir se um determinado retângulo será desenhado. Se você precisar distinguir entre exibição de tela normal e a impressão, chame a função membro IsPrinting do contexto do dispositivo.

CView::OnDrop

Chamado pela estrutura quando o usuário solta um objeto de dados sobre um destino válido para essa ação.

virtual BOOL OnDrop(
    COleDataObject* pDataObject,
    DROPEFFECT dropEffect,
    CPoint point);

Parâmetros

pDataObject
Aponta para o COleDataObject que é solto no destino da ação de soltar.

dropEffect
O efeito solicitado pelo usuário para a ação de soltar.

  • DROPEFFECT_COPY Cria uma cópia do objeto de dados que está sendo solto.

  • DROPEFFECT_MOVE Move o objeto de dados para o local atual do mouse.

  • DROPEFFECT_LINK Cria um link entre um objeto de dados e o servidor dele.

point
A posição atual do mouse em relação à área de cliente da exibição.

Valor de retorno

Diferente de zero se a operação de soltar for bem-sucedida, caso contrário, 0.

Comentários

A implementação padrão não faz nada e retorna FALSE.

Substitua essa função para implementar o efeito de uma soltura OLE na área do cliente da exibição. O objeto de dados pode ser examinado por meio de pDataObject para formatos de dados de área de transferência e dados soltos no ponto especificado.

Observação

A estrutura não chamará essa função se houver uma substituição para OnDropEx nessa classe de exibição.

CView::OnDropEx

Chamado pela estrutura quando o usuário solta um objeto de dados sobre um destino válido para essa ação.

virtual DROPEFFECT OnDropEx(
    COleDataObject* pDataObject,
    DROPEFFECT dropDefault,
    DROPEFFECT dropList,
    CPoint point);

Parâmetros

pDataObject
Aponta para o COleDataObject que é solto no destino da ação de soltar.

dropDefault
O efeito que o usuário escolheu para a operação de soltar padrão com base no estado da chave atual. Pode ser DROPEFFECT_NONE. Os efeitos da operação de soltar são abordados na seção Comentários.

dropList
Uma lista dos efeitos de soltar que a fonte da operação de soltar dá suporte. Os valores de efeito da operação de soltar podem ser combinados usando a operação OR (|) bit a bit. Os efeitos da operação de soltar são abordados na seção Comentários.

point
A posição atual do mouse em relação à área de cliente da exibição.

Valor de retorno

O efeito da operação de soltar que resultou da tentativa de soltar no local especificado por point. Esse precisa ser um dos valores indicados por dropEffectList. Os efeitos da operação de soltar são abordados na seção Comentários.

Comentários

A implementação padrão não deve realizar nenhuma ação, exceto retornar um valor fictício (-1) para indicar que a estrutura deve chamar o manipulador OnDrop.

Substitua essa função para implementar o efeito de arrastar e soltar com o botão direito do mouse. A ação de arrastar e soltar com o botão direito do mouse normalmente exibe um menu de opções quando o botão direito do mouse é liberado.

Sua substituição de OnDropEx deve consultar o botão direito do mouse. Você pode chamar GetKeyState ou armazenar o estado do botão direito do mouse por meio do manipulador OnDragEnter.

  • Se o botão direito do mouse estiver inativo, sua substituição deverá exibir um menu pop-up que ofereça os efeitos da ação de soltar compatíveis com a origem.

    • Examine dropList para determinar os efeitos da ação de soltar compatíveis com a origem. Habilite apenas essas ações no menu pop-up.

    • Use SetMenuDefaultItem para definir a ação padrão com base em dropDefault.

    • Por fim, execute a ação indicada pela seleção do usuário no menu pop-up.

  • Se o botão direito do mouse não estiver pressionado, sua substituição deverá processar isso como uma solicitação padrão de soltura. Use o efeito da ação de soltar especificado em dropDefault. Como alternativa, sua substituição pode retornar o valor fictício (-1) para indicar que OnDrop lidará com essa operação de soltar.

Use pDataObject para examinar o COleDataObject quanto ao formato de dados da Área de Transferência e aos dados soltos no ponto especificado.

Os efeitos da ação de soltar descrevem a ação associada a uma operação desse tipo. Confira a seguinte lista de efeitos da operação de soltar:

  • DROPEFFECT_NONE Uma ação de soltar não seria permitida.

  • DROPEFFECT_COPY Uma operação de cópia seria executada.

  • DROPEFFECT_MOVE Uma operação de movimentação seria executada.

  • DROPEFFECT_LINK Uma vinculação dos dados soltos para os dados originais seria estabelecida.

  • DROPEFFECT_SCROLL Indica que uma operação de rolar e arrastar está prestes a ocorrer ou está ocorrendo no destino.

Para obter mais informações sobre como definir o comando de menu padrão, confira SetMenuDefaultItem no SDK do Windows e CMenu::GetSafeHmenu nesse volume.

CView::OnEndPrinting

Chamado pela estrutura depois que um documento foi impresso ou visualizado.

virtual void OnEndPrinting(
    CDC* pDC,
    CPrintInfo* pInfo);

Parâmetros

pDC
Aponta para o contexto do dispositivo de impressora.

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual.

Comentários

A implementação padrão dessa função não faz nada. Substitua essa função para liberar todos os recursos de GDI alocados na função membro OnBeginPrinting.

CView::OnEndPrintPreview

Chamado pela estrutura quando o usuário sai do modo de visualização de impressão.

virtual void OnEndPrintPreview(
    CDC* pDC,
    CPrintInfo* pInfo,
    POINT point,
    CPreviewView* pView);

Parâmetros

pDC
Aponta para o contexto do dispositivo de impressora.

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual.

point
Especifica o ponto na página que foi exibido pela última vez no modo de visualização.

pView
Aponta para o objeto de exibição usado para visualização.

Comentários

A implementação padrão dessa função chama a função membro OnEndPrinting e restaura a janela de quadro principal para o estado em que estava antes da visualização de impressão começar. Substitua essa função para executar o processamento especial quando o modo de visualização for encerrado. Por exemplo, se você quiser manter a posição do usuário no documento ao alternar do modo de visualização para o modo de exibição normal, poderá rolar até a posição descrita pelo parâmetro point e pelo membro m_nCurPage da estrutura CPrintInfo apontada pelo parâmetro pInfo.

Sempre chame a versão de classe base de OnEndPrintPreview por meio da sua substituição, normalmente no final da função.

CView::OnInitialUpdate

Chamado pela estrutura depois que o modo de exibição é anexado primeiro ao documento, mas antes que o modo de exibição seja exibido inicialmente.

virtual void OnInitialUpdate();

Comentários

A implementação padrão dessa função chama a função membro OnUpdate sem informações de dica (ou seja, usando os valores padrão de 0 para o parâmetro lHint e NULL para o parâmetro pHint). Substitua essa função para executar qualquer inicialização única que exija informações sobre o documento. Por exemplo, se o aplicativo tiver documentos de tamanho fixo, você poderá usar essa função para inicializar os limites de rolagem de uma exibição com base no tamanho do documento. Se o aplicativo der suporte a documentos de tamanho variável, use OnUpdate para atualizar os limites de rolagem sempre que o documento for alterado.

CView::OnPrepareDC

Chamado pela estrutura antes que a função membro OnDraw seja chamada para exibição de tela e antes que a função membro OnPrint seja chamada para cada página durante a impressão ou visualização de impressão.

virtual void OnPrepareDC(
    CDC* pDC,
    CPrintInfo* pInfo = NULL);

Parâmetros

pDC
Aponta para o contexto do dispositivo a ser usado para renderizar uma imagem do documento.

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual se OnPrepareDC está sendo chamado para impressão ou visualização de impressão; o membro m_nCurPage especifica a página prestes a ser impressa. Esse parâmetro é NULL se OnPrepareDC está sendo chamado para exibição de tela.

Comentários

A implementação padrão dessa função não realizará nenhuma ação se a função for chamada para exibição de tela. No entanto, essa função é substituída em classes derivadas, como CScrollView, para ajustar atributos do contexto do dispositivo; consequentemente, você deve sempre chamar a implementação da classe base no início da substituição.

Se a função for chamada para impressão, a implementação padrão examinará as informações de página armazenadas no parâmetro pInfo. Se o comprimento do documento não tiver sido especificado, OnPrepareDC supõe que o documento tenha uma página e interrompa o loop de impressão depois que uma página tiver sido impressa. A função interrompe o loop de impressão definindo o membro m_bContinuePrinting da estrutura como FALSE.

Substitua OnPrepareDC por qualquer uma das seguintes razões:

  • Para ajustar atributos do contexto do dispositivo conforme necessário para a página especificada. Por exemplo, se você precisar definir o modo de mapeamento ou outras características do contexto do dispositivo, faça isso nessa função.

  • Para executar a paginação de tempo de impressão. Normalmente, você especifica o comprimento do documento quando a impressão começa, usando a função membro OnPreparePrinting. No entanto, se você não souber com antecedência a extensão do documento (por exemplo, ao imprimir um número indeterminado de registros de um banco de dados), substitua OnPrepareDC para testar o final do documento enquanto ele estiver sendo impresso. Quando não houver mais conteúdo do documento a ser impresso, defina o membro m_bContinuePrinting da estrutura CPrintInfo como FALSE.

  • Para enviar códigos de escape para a impressora página por página. Para enviar códigos de escape de OnPrepareDC, chame a função membro Escape do parâmetro pDC.

Chame a implementação da classe base de OnPrepareDC no início da substituição.

Exemplo

void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
   CView::OnPrepareDC(pDC, pInfo);

   // If we are printing, set the mapmode and the window
   // extent properly, then set viewport extent. Use the
   // SetViewportOrg member function in the CDC class to
   // move the viewport origin to the center of the view.

   if (pDC->IsPrinting()) // Is the DC a printer DC.
   {
      CRect rect;
      GetClientRect(&rect);

      pDC->SetMapMode(MM_ISOTROPIC);
      CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
      ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
      CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
      ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
      CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
   }
}

CView::OnPreparePrinting

Chamado pela estrutura antes de um documento ser impresso ou visualizado.

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

Parâmetros

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual.

Valor de retorno

Diferente de zero para começar a imprimir; 0 se o trabalho de impressão tiver sido cancelado.

Comentários

A implementação padrão não tem ação.

Você precisa substituir essa função para habilitar a impressão e a visualização de impressão. Chame a função membro DoPreparePrinting, passando o parâmetro pInfo e, em seguida, retorne o valor retornado dela; DoPreparePrinting exibe a caixa de diálogo Imprimir e cria um contexto de dispositivo de impressora. Se você quiser inicializar a caixa de diálogo Imprimir com valores diferentes dos padrões, atribua valores aos membros de pInfo. Por exemplo, se você souber o comprimento do documento, passe o valor para a função membro SetMaxPage de pInfo antes de chamar DoPreparePrinting. Esse valor é exibido na caixa Para: na parte Intervalo da caixa de diálogo Imprimir.

DoPreparePrinting não exibe a caixa de diálogo Imprimir para um trabalho de visualização. Se você quiser ignorar a caixa de diálogo Imprimir para um trabalho de impressão, verifique se o membro m_bPreview de pInfo é FALSE e, em seguida, defina-o como TRUE antes de passá-lo para DoPreparePrinting; depois, redefina-o como FALSE.

Se você precisar executar inicializações que exijam acesso ao objeto CDC que representa o contexto do dispositivo da impressora (por exemplo, se precisar saber o tamanho da página antes de especificar o comprimento do documento), substitua a função membro OnBeginPrinting.

Se você quiser definir o valor dos membros m_nNumPreviewPages ou m_strPageDesc do parâmetropInfo, faça isso depois de chamar DoPreparePrinting. A função membro DoPreparePrinting define m_nNumPreviewPages como o valor encontrado no arquivo .INI do aplicativo e define m_strPageDesc como o valor padrão dele.

Exemplo

Substitua OnPreparePrinting e chame DoPreparePrinting da substituição para que a estrutura exiba uma caixa de diálogo Imprimir e crie um contexto de dispositivo de impressora para você.

BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
   return CEditView::DoPreparePrinting(pInfo);
}

Se você souber quantas páginas o documento contém, defina a página máxima em OnPreparePrinting antes de chamar DoPreparePrinting. A estrutura exibirá o número máximo da página na caixa "para" da caixa de diálogo Imprimir.

BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
   //The document has 2 pages.
   pInfo->SetMaxPage(2);
   return CView::DoPreparePrinting(pInfo);
}

CView::OnPrint

Chamado pela estrutura para imprimir ou visualizar uma página do documento.

virtual void OnPrint(
    CDC* pDC,
    CPrintInfo* pInfo);

Parâmetros

pDC
Aponta para o contexto do dispositivo de impressora.

pInfo
Aponta para uma estrutura CPrintInfo que descreve o trabalho de impressão atual.

Comentários

Para cada página que está sendo impressa, a estrutura chama essa função imediatamente após chamar a função membro OnPrepareDC. A página que está sendo impressa é especificada pelo membro m_nCurPage da estrutura CPrintInfo apontada por pInfo. A implementação padrão chama a função membro OnDraw e passa o contexto do dispositivo de impressora.

Substitua essa função por qualquer um dos seguintes motivos:

  • Para permitir a impressão de documentos de várias páginas. Renderize apenas a parte do documento que corresponde à página que está sendo impressa no momento. Se você estiver usando OnDraw para executar a renderização, poderá ajustar a origem do visor para que apenas a parte apropriada do documento seja impressa.

  • Para fazer com que a imagem impressa pareça diferente da imagem de tela (ou seja, se seu aplicativo não for WYSIWYG). Em vez de passar o contexto do dispositivo de impressora para OnDraw, use o contexto do dispositivo para renderizar uma imagem usando atributos não mostrados na tela.

    Se você precisar de recursos GDI para impressão que você não usa para exibição de tela, selecione-os no contexto do dispositivo antes de desenhar e desmarque-os posteriormente. Esses recursos de GDI devem ser alocados em OnBeginPrinting e liberados em OnEndPrinting.

  • Para implementar cabeçalhos ou rodapés. Você ainda pode usar OnDraw para fazer a renderização restringindo a área na qual ela pode imprimir.

Observe que o membro m_rectDraw do parâmetro pInfo descreve a área imprimível da página em unidades lógicas.

Não chame OnPrepareDC em sua substituição de OnPrint; a estrutura chama OnPrepareDC automaticamente antes de chamar OnPrint.

Exemplo

Veja o seguinte esqueleto para uma função OnPrint substituída:

void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
   UNREFERENCED_PARAMETER(pInfo);

   // Print headers and/or footers, if desired.
   // Find portion of document corresponding to pInfo->m_nCurPage.
   OnDraw(pDC);
}

Para outro exemplo, consulte CRichEditView::PrintInsideRect.

CView::OnScroll

Chamado pela estrutura para determinar se a rolagem é possível.

virtual BOOL OnScroll(
    UINT nScrollCode,
    UINT nPos,
    BOOL bDoScroll = TRUE);

Parâmetros

nScrollCode
Um código de barra de rolagem que indica a solicitação de rolagem do usuário. Esse parâmetro é composto por duas partes: um byte de baixa ordem, que determina o tipo de rolagem que ocorre horizontalmente; e um byte de alta ordem, que determina o tipo de rolagem que ocorre verticalmente:

  • SB_BOTTOM Rola para baixo.

  • SB_LINEDOWN Rola uma linha para baixo.

  • SB_LINEUP Rola uma linha para cima.

  • SB_PAGEDOWN Rola uma página para baixo.

  • SB_PAGEUP Rola uma página para cima.

  • SB_THUMBTRACK Arraste a caixa de rolagem para a posição especificada. A posição atual é especificada em nPos.

  • SB_TOP Rola para cima.

nPos
Contém a posição atual da caixa de rolagem se o código da barra de rolagem for SB_THUMBTRACK; caso contrário, não é usado. Dependendo do intervalo de rolagem inicial, nPos pode ser negativo e deve ser convertido em um int, se necessário.

bDoScroll
Determina se você deve realmente executar a ação de rolagem especificada. Se for TRUE, a rolagem deverá ocorrer; se for FALSE, não deverá.

Valor de retorno

Se bDoScroll for TRUE e o modo de exibição tiver sido realmente rolado, retornará um valor diferente de zero; caso contrário, 0. Se bDoScroll for FALSE, retorne o valor que você teria retornado se bDoScroll fosse TRUE, mesmo que você não faça a rolagem.

Comentários

Em um caso, essa função é chamada pela estrutura com bDoScroll definido para TRUE quando a exibição recebe uma mensagem de barra de rolagem. Nesse caso, você deve rolar a exibição. No outro caso, essa função é chamada com bDoScroll definido para FALSE quando um item OLE é inicialmente arrastado para a região de rolagem automática de um destino da ação de soltar antes que a rolagem realmente ocorra. Nesse caso, você não deve rolar a exibição.

CView::OnScrollBy

Chamado pela estrutura quando o usuário exibe uma área além da exibição atual do documento, arrastando um item OLE para as bordas atuais da exibição ou manipulando as barras de rolagem verticais ou horizontais.

virtual BOOL OnScrollBy(
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

Parâmetros

sizeScroll
Número de pixels rolados horizontal e verticalmente.

bDoScroll
Determina se a rolagem da exibição ocorre. Se for TRUE, a rolagem ocorrerá; se for FALSE, não ocorrerá.

Valor de retorno

Diferente de zero se foi possível rolar a exibição; caso contrário, 0.

Comentários

Em classes derivadas, esse método verifica se a exibição é rolável na direção solicitada pelo usuário e, em seguida, atualiza a nova região, se necessário. Essa função é chamada automaticamente por CWnd::OnHScroll e CWnd::OnVScroll para executar a solicitação de rolagem real.

A implementação padrão desse método não altera a exibição, mas se ele não for chamado, a exibição não rolará em uma classe derivada de CScrollView.

Se a largura ou altura do documento exceder 32767 pixels, a rolagem além de 32767 falhará porque OnScrollBy é chamada com um argumento sizeScroll inválido.

CView::OnUpdate

Chamada pela estrutura após a modificação do documento do modo de exibição; essa função é chamada por CDocument::UpdateAllViews e permite que o modo de exibição atualize sua exibição para refletir essas modificações.

virtual void OnUpdate(
    CView* pSender,
    LPARAM lHint,
    CObject* pHint);

Parâmetros

pSender
Aponta para a exibição que modificou o documento ou para NULL se todas as exibições devem ser atualizadas.

lHint
Contém informações sobre as modificações.

pHint
Aponta para um objeto que armazena informações sobre as modificações.

Comentários

Ele também é chamado pela implementação padrão de OnInitialUpdate. A implementação padrão invalida toda a área do cliente, marcando-a para pintura quando a próxima mensagem WM_PAINT é recebida. Substitua essa função se você quiser atualizar apenas as regiões mapeadas para as partes modificadas do documento. Para fazer isso, você precisa passar informações sobre as modificações usando os parâmetros de dica.

Para usar lHint, defina valores de dica especiais, normalmente uma máscara de bits ou um tipo enumerado, e faça com que o documento passe um desses valores. Para usar pHint, derive uma classe de CObject dica e faça com que o documento passe um ponteiro para um objeto de dica; ao substituir OnUpdate, use a função membro CObject::IsKindOf para determinar o tipo de tempo de execução do objeto de dica.

Normalmente, você não deve executar nenhum desenho diretamente de OnUpdate. Em vez disso, determine o retângulo que descreve, nas coordenadas do dispositivo, a área que requer atualização; passe este retângulo para CWnd::InvalidateRect. Isso faz com que a pintura ocorra na próxima vez que uma mensagem WM_PAINT for recebida.

Se lHint é 0 e pHint é NULL, o documento enviou uma notificação de atualização genérica. Se uma exibição receber uma notificação de atualização genérica ou se não puder decodificar as dicas, ela deverá invalidar toda a área de cliente.

Confira também

Exemplo de MFC MDIDOCVW
Classe CWnd
Gráfico da hierarquia
Classe CWnd
Classe CFrameWnd
Classe CSplitterWnd
Classe CDC
Classe CDocTemplate
Classe CDocument