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 objetoCEditView
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
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
paraMK_CONTROL|MK_SHIFT
Cria uma vinculação entre o objeto e o respectivo servidor.DROPEFFECT_COPY
paraMK_CONTROL
Cria uma cópia do objeto que foi solto.DROPEFFECT_MOVE
paraMK_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
paraMK_CONTROL|MK_SHIFT
Cria uma vinculação entre o objeto e o respectivo servidor.DROPEFFECT_COPY
paraMK_CONTROL
Cria uma cópia do objeto que foi solto.DROPEFFECT_MOVE
paraMK_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
paraMK_CONTROL|MK_SHIFT
Cria uma vinculação entre o objeto e o respectivo servidor.DROPEFFECT_COPY
paraMK_CONTROL
Cria uma cópia do objeto que foi solto.DROPEFFECT_MOVE
paraMK_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 emdropDefault
.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 queOnDrop
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), substituaOnPrepareDC
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 membrom_bContinuePrinting
da estruturaCPrintInfo
comoFALSE
.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 membroEscape
do parâmetropDC
.
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 emOnEndPrinting
.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 emnPos
.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