Arquitetura de visualização de impressão

Este artigo explica como a estrutura do MFC implementa a funcionalidade de visualização de impressão.Os tópicos abordados incluem:

  • Processo de visualização de impressão

  • Modificando o modo de visualização de impressão

Visualização de impressão é um pouco diferente de exibição de tela e impressão porque, em vez de desenhar uma imagem diretamente em um dispositivo, o aplicativo deve simular a impressora usando a tela.Para acomodar isso, a biblioteca Microsoft Foundation Class define uma classe (não documentada) especial derivada de Classe CDC, chamado CPreviewDC.All CDC objetos contêm dois contextos de dispositivo, mas geralmente são idênticos. In a CPreviewDC de objetos, eles são diferentes: o primeiro representa a impressora que está sendo simulada e o segundo representa a tela na qual saída é realmente exibida.

O processo de visualização de impressão

Quando o usuário seleciona o visualização de impressão comando from a Arquivo menu, o estrutura cria um CPreviewDC objeto.Sempre que seu aplicativo executa uma operação que define uma característica do contexto de dispositivo de impressora, a estrutura também realiza uma operação similar no contexto de dispositivo de tela.Por exemplo, se seu aplicativo seleciona uma fonte para impressão, a estrutura seleciona uma fonte para exibição na tela que simula a fonte de impressora.Sempre que o aplicativo poderia enviar saída para a impressora, a estrutura em vez disso, envia a saída na tela.

Além disso, a visualização da impressão difere seja impresso na ordem em que cada desenha as páginas de um documento.Durante a impressão, a estrutura continua um loop de impressão até que um determinado intervalo de páginas tem sido processado.Durante a visualização de impressão, uma ou duas páginas são exibidas a qualquer momento e, em seguida, o aplicativo aguarda; não há mais páginas são exibidas até que o usuário responda.Durante a visualização de impressão, o aplicativo também deve responder a WM_PAINT mensagens, assim sistema autônomo faz durante a exibição de tela comuns.

The CView::OnPreparePrinting função é chamada quando o modo de visualização é chamado, basta sistema autônomo ele estiver no início de um trabalho de impressão. The Estrutura CPrintInfo estrutura passada para a função contém vários membros cujos valores que você pode conjunto para ajustar certas características da operação de visualização de impressão. Por exemplo, você pode conjunto o m_nNumPreviewPagesmembro para especificar se deseja visualizar o documento no modo de uma página ou duas páginas.

Modificando visualização de impressão

Você pode modificar o comportamento e a aparência da visualização de impressão de várias maneiras em vez disso, com facilidade.Por exemplo, você pode, entre outras coisas:

  • Fazer com que a janela de visualização de impressão exibir um BAR de rolar para facilitar o acesso a qualquer página do documento.

  • Fazer com que o modo de visualização de impressão manter a posição do usuário no documento, começando sua exibição na página corrente.

  • Fazer inicialização diferente a ser executada para a impressão e visualização de impressão.

  • Fazer com que o modo de visualização de impressão exibir os números de página em seus próprios formatos.

Se você souber quanto tempo o documento e telefonar SetMaxPage com o valor apropriado, a estrutura pode usar essas informações no modo de visualização assim sistema autônomo durante a impressão. Depois que a estrutura sabe o tamanho do documento, ele pode fornecer a janela de visualização com um BAR de rolar, permitindo que o usuário para páginas e para trás pelo documento no modo de visualização.Se você não conjunto o comprimento do documento, a estrutura não pode posicionar a caixa de rolar para indicar a posição corrente, para que a estrutura não adiciona um BAR de rolar.Nesse caso, o usuário deve usar os botões página anterior e próxima página na BAR de controle da janela de visualização para percorrer o documento.

Para visualização de impressão, você talvez ache útil para atribuir um valor para o m_nCurPage membro de CPrintInfo, mesmo que nunca faria isso para impressão comum. Durante a impressão normal, este membro transporta as informações de estrutura para sua classe de modo de exibição.Isso é como a estrutura informa o modo de exibição a página que deve ser impresso.

Em contraste, quando o modo de visualização de impressão é iniciado, o m_nCurPage membro transporta informações na direção oposta: do modo de exibição para a estrutura.A estrutura usa o valor desse membro para determinar qual página deve ser visualizada pela primeira vez.O valor padrão desse membro é 1, portanto, a primeira página do documento é exibida inicialmente.Você pode substituir OnPreparePrinting Para conjunto esse membro como o número da página sendo exibida no momento em que o comando Visualizar impressão foi chamado. Dessa forma, o aplicativo mantém a posição corrente do usuário ao ir do modo de exibição normal para o modo de visualização de impressão.

Às vezes convém OnPreparePrinting para executar inicialização diferente dependendo se ela é chamada para um trabalho de impressão ou visualização de impressão. Você pode determinar isso examinando o m_bPreview variável de membro a CPrintInfo estrutura. Esse membro é conjunto para TRUE quando é chamado modo de visualização de impressão.

The CPrintInfo estrutura também contém um membro chamado m_strPageDesc, que é usada para formatar as seqüências de caracteres exibidas na parte inferior da tela em modos de página única e várias páginas.Por padrão essas cadeias de caracteres têm o formato "páginan"e"páginas n - m", mas você pode modificar m_strPageDesc de dentro de OnPreparePrinting e defina as seqüências de caracteres para algo mais elaborados. See Estrutura CPrintInfo no Referência da MFC para obter mais informações.

Consulte também

Referência

Imprimindo e visualização de impressão

Imprimindo

Classe CView

Classe CDC