Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Classe
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 objetoCEditViewcomo 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_INACTIVEA janela de quadro está sendo desativada.WA_ACTIVEA 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_CLICKACTIVEA 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_NONEO objeto de dados não pode ser solto nesta janela.DROPEFFECT_LINKparaMK_CONTROL|MK_SHIFTCria uma vinculação entre o objeto e o respectivo servidor.DROPEFFECT_COPYparaMK_CONTROLCria uma cópia do objeto que foi solto.DROPEFFECT_MOVEparaMK_ALTCria 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_NONEO objeto de dados não pode ser solto nesta janela.DROPEFFECT_LINKparaMK_CONTROL|MK_SHIFTCria uma vinculação entre o objeto e o respectivo servidor.DROPEFFECT_COPYparaMK_CONTROLCria uma cópia do objeto que foi solto.DROPEFFECT_MOVEparaMK_ALTCria 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_NONEO objeto de dados não pode ser solto nesta janela.DROPEFFECT_LINKparaMK_CONTROL|MK_SHIFTCria uma vinculação entre o objeto e o respectivo servidor.DROPEFFECT_COPYparaMK_CONTROLCria uma cópia do objeto que foi solto.DROPEFFECT_MOVEparaMK_ALTCria uma cópia do objeto que foi solto e exclui o objeto original.DROPEFFECT_SCROLLIndica 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_COPYCria uma cópia do objeto de dados que está sendo solto.DROPEFFECT_MOVEMove o objeto de dados para o local atual do mouse.DROPEFFECT_LINKCria 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
dropListpara determinar os efeitos da ação de soltar compatíveis com a origem. Habilite apenas essas ações no menu pop-up.Use
SetMenuDefaultItempara 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 queOnDroplidará 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_NONEUma ação de soltar não seria permitida.DROPEFFECT_COPYUma operação de cópia seria executada.DROPEFFECT_MOVEUma operação de movimentação seria executada.DROPEFFECT_LINKUma vinculação dos dados soltos para os dados originais seria estabelecida.DROPEFFECT_SCROLLIndica 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), substituaOnPrepareDCpara 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_bContinuePrintingda estruturaCPrintInfocomoFALSE.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 membroEscapedo 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
OnDrawpara 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
OnBeginPrintinge liberados emOnEndPrinting.Para implementar cabeçalhos ou rodapés. Você ainda pode usar
OnDrawpara 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_BOTTOMRola para baixo.SB_LINEDOWNRola uma linha para baixo.SB_LINEUPRola uma linha para cima.SB_PAGEDOWNRola uma página para baixo.SB_PAGEUPRola uma página para cima.SB_THUMBTRACKArraste a caixa de rolagem para a posição especificada. A posição atual é especificada emnPos.SB_TOPRola 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