既定の印刷プロセス
この記事では、MFC フレームワークの観点から、Windows の既定の印刷プロセスについて説明します。
MFC アプリケーションでは、ビュー クラスに OnDraw
という名前のメンバー関数があります。このメンバー関数には、すべての描画コードが含まれています。 OnDraw
は、パラメーターとして CDC オブジェクトへのポインターを受け取ります。 その CDC
オブジェクトは、OnDraw
によって生成されたイメージを受け取るデバイス コンテキストを表します。 ドキュメントを表示するウィンドウが WM_PAINT メッセージを受け取ると、フレームワークは OnDraw
を呼び出し、それに画面のデバイス コンテキストを渡します (具体的には CPaintDC オブジェクト)。 それに応じて、OnDraw
の出力が画面に表示されます。
Windows の場合のプログラミングでは、プリンターへの出力の送信は、画面への出力の送信と非常によく似ています。 これは、Windows グラフィック デイタイス インターフェイス (GDI) がハードウェアに依存しないためです。 適切なデバイス コンテキストを使用するだけで、画面表示や印刷に同じ GDI 関数を使用できます。 OnDraw
が受け取る CDC
オブジェクトがプリンターを表す場合、OnDraw
の出力はプリンターに送信されます。
ここでは、追加の作業を行わなくても、MFC アプリケーションで簡単な印刷を実行する方法について説明します。 フレームワークが [印刷] ダイアログ ボックスを表示し、プリンターのデバイス コンテキストを作成します。 ユーザーが [ファイル] メニューから [印刷] コマンドを選択すると、ビューによってこのデバイス コンテキストが OnDraw
に渡され、プリンターにドキュメントが描画されます。
ただし、印刷と画面表示にはいくつかの大きな違いがあります。 印刷する場合は、ウィンドウ内でドキュメントのどの部分も表示できる状態ではなく、ドキュメントを別個のページに分割し、それらを一度に 1 つずつ表示する必要があります。 その結果、用紙のサイズ (レター サイズ、法律文書サイズ、封筒サイズ) を把握しておく必要があります。 横モードや縦モードなど、異なる向きで印刷できます。 Microsoft Foundation Class ライブラリは、アプリケーションでこれらの問題がどのように処理されるかを予測できないため、これらの機能を追加できるプロトコルが用意されています。
このプロトコルについては、「マルチページ ドキュメント」で説明されています。