Cabeçalhos e rodapés
Este artigo explica como adicionar cabeçalhos e rodapés a um documento impresso.
Quando você olha para um documento na tela, o nome do documento e seu local atual no documento são comumente exibidos em uma barra de título e uma barra de status. Ao examinar uma cópia impressa de um documento, é útil ter o nome e o número da página mostrados em um cabeçalho ou rodapé. Esse é um modo comum como até mesmo os programas WYSIWYG diferem na forma como executam a impressão e a exibição de tela.
A função membro OnPrint é o local apropriado para imprimir cabeçalhos ou rodapés porque é chamada para cada página e porque é chamada apenas para impressão, não para exibição de tela. Você pode definir uma função separada para imprimir um cabeçalho ou rodapé e passá-la do contexto do dispositivo da impressora de OnPrint
. Talvez seja necessário ajustar a origem ou a extensão da janela antes de chamar OnDraw para evitar que o corpo da página se sobreponha ao cabeçalho ou ao rodapé. Talvez você também precise modificar OnDraw
, pois a quantidade do documento que se encaixa na página pode ser reduzida.
Um modo de compensar a área tomada pelo cabeçalho ou rodapé é usar o membro m_rectDraw de CPrintInfo. Cada vez que uma página é impressa, esse membro é inicializado com a área utilizável da página. Se você imprimir um cabeçalho ou rodapé antes de imprimir o corpo da página, poderá reduzir o tamanho do retângulo armazenado em m_rectDraw para considerar a área ocupada pelo cabeçalho ou pelo rodapé. Em seguida, OnPrint
pode consultar m_rectDraw para descobrir a quantidade de área restante para imprimir o corpo da página.
Você não pode imprimir um cabeçalho, ou qualquer outra coisa, do OnPrepareDC, porque ele é chamado antes de a função de membro StartPage
do CDC ter sido chamada. Neste ponto, o contexto do dispositivo da impressora é considerado um limite de página. Você pode executar impressão somente na função de membro OnPrint
.