ヘッダーとフッター
更新 : 2007 年 11 月
ここでは、印刷するドキュメントにヘッダーとフッターを追加する方法について説明します。
画面上のドキュメントを見る場合、通常はドキュメントの名前およびドキュメントの現在の位置がタイトル バーおよびステータス バーに表示されています。印刷されたドキュメントを見る場合でも、ヘッダーとフッターに名前とページ番号が表示されていると便利です。WYSIWYG プログラムでも、この点は印刷と画面表示の処理が異なります。
OnPrint メンバ関数は、ページごとに呼び出され、また画面表示用ではなく印刷用にのみ呼び出されるものなので、ヘッダーとフッターの印刷の指示には適しています。ヘッダーまたはフッターを印刷する関数をそれぞれ定義し、それを OnPrint からプリンタ デバイス コンテキストに渡すことができます。OnDraw を呼び出す前に、ヘッダーまたはフッターがページの本文に重ならないようにするために、ウィンドウの原点または範囲を調整しなければならない場合もあります。また、OnDraw を修正して 1 ページに入るドキュメントの量を減らす必要がある場合もあります。
ヘッダーまたはフッター用の領域を確保する 1 つの方法として、CPrintInfo の m_rectDraw メンバを使用する場合があります。ページが印刷されるたびに、このメンバはページの使用可能な領域で初期化されます。ページの本文を印刷する前にヘッダーまたはフッターを印刷する場合は、m_rectDraw に格納されている四角形のサイズをヘッダーまたはフッターの大きさに合わせて減らします。そのうえで、OnPrint によって m_rectDraw が参照され、ページの本文の印刷用に確保する領域が決められます。
OnPrepareDC 関数からは、ヘッダーやフッターに限らず、何も印刷することはできません。なぜなら、OnPrepareDC 関数は、CDC の StartPage メンバ関数が呼び出される前に既に呼び出されているからです。その時点で、プリンタ デバイス コンテキストはページ境界にあると見なされます。印刷は、OnPrint メンバ関数でのみ実行できます。