Como a impressão padrão é feita
Este artigo explica o processo de impressão padrão no Windows em termos da estrutura do MFC.
Em aplicativos MFC, a classe de modo de exibição tem uma função membro nomeada OnDraw
que contém todo o código de desenho. OnDraw
usa um ponteiro para um objeto CDC como parâmetro. Esse objeto CDC
representa o contexto do dispositivo para receber a imagem produzida por OnDraw
. Quando a janela que exibe o documento recebe uma mensagem WM_PAINT, a estrutura chama OnDraw
e passa a ele um contexto de dispositivo para a tela (um objeto CPaintDC, para ser mais preciso). Assim, a saída de OnDraw
vai para a tela.
Na programação do Windows, o envio de saída para a impressora é muito semelhante ao envio de saída para a tela. Isso ocorre porque a GDI (interface do dispositivo gráfico) do Windows é independente de hardware. Você pode usar as mesmas funções GDI para exibição de tela ou para impressão, simplesmente usando o contexto de dispositivo apropriado. Se o objeto CDC
que OnDraw
recebe representa a impressora, a saída de OnDraw
vai para a impressora.
Isso explica como os aplicativos MFC podem executar impressão simples sem exigir esforço adicional de sua parte. A estrutura cuida de exibir a caixa de diálogo Imprimir e criar um contexto de dispositivo para a impressora. Quando o usuário seleciona o comando Imprimir no menu Arquivo, o modo de exibição passa esse contexto do dispositivo para OnDraw
, que desenha o documento na impressora.
No entanto, há algumas diferenças significativas entre impressão e exibição em tela. Quando você imprime, é necessário dividir o documento em páginas distintas e exibi-las uma de cada vez, em vez de exibir qualquer parte estiver visível em uma janela. Para finalizar, você precisa estar ciente do tamanho do papel (seja carta, legal ou um envelope). Talvez você queira imprimir em diferentes orientações, como paisagem ou modo retrato. A biblioteca Microsoft Foundation Class não pode prever como seu aplicativo lidará com esses problemas, e portanto fornece um protocolo para você adicionar essas funcionalidades.
Esse protocolo está descrito no artigo Documentos de Várias Páginas.