En-têtes et pieds de page
Cet article explique comment ajouter des en-têtes et pieds de page à un document imprimé.
Lorsque vous consultez un document à l'écran, le nom du document et la position actuelle dans le document sont généralement affichés dans la barre de titre et la barre d'état. En consultant une copie imprimée d'un document, il est utile d'avoir le nom et le numéro de page affichés dans un en-tête ou un pied de page. C'est un point fréquent sur lequel même les programmes WYSIWYG diffèrent dans la façon dont ils effectuent l'impression et l'affichage à l'écran.
La fonction membre OnPrint est l’endroit approprié pour imprimer des en-têtes ou des pieds de page, car elle est appelée pour chaque page, et parce qu’elle est appelée uniquement pour l’impression, et non pour l’affichage de l’écran. Vous pouvez définir une fonction distincte pour imprimer un en-tête ou un pied de page, et lui passer le contexte de l'imprimante à partir de OnPrint
. Vous devrez peut-être ajuster l’origine ou l’étendue de la fenêtre avant d’appeler OnDraw pour éviter que le corps de la page chevauche l’en-tête ou le pied de page. Vous devrez peut-être modifier OnDraw
car la quantité de document qui tient dans la page peut être réduite.
Une façon de compenser la zone prise par l’en-tête ou le pied de page consiste à utiliser le membre m_rectDraw de CPrintInfo. Chaque fois qu'une page est imprimée, ce membre est initialisé avec la zone utilisable de la page. Si vous imprimez un en-tête ou un pied de page avant d’imprimer le corps de la page, vous pouvez réduire la taille du rectangle stocké dans m_rectDraw pour tenir compte de la zone prise par l’en-tête ou le pied de page. Vous pouvez ensuite OnPrint
faire référence à m_rectDraw pour déterminer la quantité de zone restante pour l’impression du corps de la page.
Vous ne pouvez pas imprimer un en-tête ou autre chose à partir d’OnPrepareDC, car il est appelé avant que la StartPage
fonction membre de capture de données modifiées ait été appelée. À ce stade, le contexte de l'imprimante est considéré comme étant la limite d'une page. Vous pouvez exécuter l'impression uniquement depuis la fonction membre OnPrint
.