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