次の方法で共有


印刷プレビューのアーキテクチャ

この技術情報では、 MFC フレームワークが印刷プレビュー機能を実装する方法を示します。ここでは、次の内容について説明します。

  • 印刷プレビューのプロセス

  • 変更の印刷プレビュー

印刷プレビューは直接デバイスのイメージを描画する代わりに、アプリケーションが画面を使用してプリンターをシミュレートする必要があるため、画面表示および印刷と多少異なります。これを行うには、 Microsoft Foundation Class ライブラリには CPreviewDCという CDC クラスから派生したクラス (特別に記載されていない)を定義します。CDC のすべてのオブジェクトは 2 種類のデバイス コンテキストが含まれていますが、通常は同じです。CPreviewDC オブジェクトには、異なる: 1 番目のは、モデル化されているプリンターを表し、 2 は出力が実際に表示される画面を表します。

印刷プレビューのプロセス

ユーザーが ファイル のメニューからの印刷プレビュー コマンドを選択すると、フレームワークは CPreviewDC のオブジェクトを作成します。アプリケーションがプリンター デバイス コンテキストの特性を設定する操作を実行するたびに、フレームワークは、画面デバイス コンテキストの同様の操作を実行します。たとえば、アプリケーションが印刷のフォントを選択すると、フレームワークはプリンター フォントをシミュレートする画面表示のフォントを選択します。アプリケーションをプリンターに出力を送ると、フレームワークは画面に出力を送信します。

印刷プレビューは、注文で印刷とは異なりますそれぞれがドキュメントのページを描画します。印刷時に、フレームワークが特定の範囲内のページが表示されるまで印刷ループが継続されます。印刷プレビュー中に、またはページはいつでも表示、アプリケーションは待機します; そのほかのページは、ユーザーが応答するまで表示されます。印刷プレビュー中に、アプリケーションは、 WM_PAINT のメッセージに、通常の画面表示の間にするように応答する必要があります。

CView::OnPreparePrinting 関数は、印刷ジョブの先頭にあるため、プレビュー モードが呼び出されたときに呼び出されます。関数に渡される CPrintInfo 構造体 の構造体は値を設定印刷プレビューの操作の特定の特性を調整するために使用できるいくつかのメンバーが含まれます。たとえば、 1 ページまたはページ 2 モードの文書をプレビューするかどうかを指定するに m_nNumPreviewPages のメンバーを設定できます。

変更の印刷プレビュー

さまざまな方法で印刷プレビューの動作と外観を多少簡単に変更できます。たとえば、はいくつかありますができます:

  • 印刷プレビュー ペインをドキュメント内の任意のページへの簡単なアクセスのスクロール バーを表示するように設定します。

  • 印刷プレビューを現在のページの表示を起動して、ドキュメントのユーザーの位置を維持する可能性があります。

  • 別の初期化を印刷プレビュー、および印刷に実行します。

  • 独自の形式で表示のページ番号を印刷プレビューを設定します。

ドキュメントがどの程度、適切な値の SetMaxPage をダイヤルするかを確認すると、フレームワークはプレビュー モードで、印刷時にこの情報を使用できます。フレームワークがドキュメントの期間がわかっている場合は、スクロール バーをプレビュー ペインに与えることができ、プレビュー モード ドキュメント間を前後のページングをユーザーを許可します。ドキュメントの継続時間を設定しない場合、フレームワークが現在位置を示すようにスクロール ボックスを配置できないので、フレームワークはスクロール バーを追加しません。この場合、ユーザーはドキュメントをページングするために、プレビュー ウィンドウ コントロール バーの次のページ、前のページのボタンを使用する必要があります。

印刷プレビュー用に、通常の印刷用することはなくても CPrintInfom_nCurPage のメンバーに値を割り当てる役立つ場合があります。通常の印刷時に、このメンバーは、フレームワークからビュー クラスに情報をやり取りします。これは、ページが印刷する必要があるときにフレームワークがどのように、ビューに通知するかです。

これによって、印刷プレビュー モードが起動すると、 m_nCurPage のメンバーは、一方の情報をやり取りします: ビューからフレームワークへの。フレームワークは、ページをプレビューするかどうかを、このメンバーの値を使用します。このメンバーの既定値は 1 で、このドキュメントの最初のページが最初に表示されます。印刷プレビュー コマンドが呼び出されたときに表示されるページの数は、このメンバーを設定するに OnPreparePrinting をオーバーライドできます。この方法では、アプリケーション表示モードで印刷プレビュー モードに移動すると、ユーザーの現在位置を保持します。

場合によっては、印刷ジョブまたは印刷プレビューに呼び出されるかどうか OnPreparePrinting に別の初期化をで実行する必要があります。CPrintInfo の構造体の m_bPreview のメンバー変数を調べることによってこれを確認できます。このメンバーは TRUE に印刷プレビューが呼び出されたときに設定されます。

CPrintInfo の構造体も m_strPageDescという名前のシングルページおよび複数のページ モードの画面の下部に表示される文字列の書式設定に使用されるメンバーが含まれます。これらの文字列は、フォーム ページの 「 n」が既定で、 「n」ページに表示します - m」が、より次に OnPreparePrinting 内から m_strPageDesc を変更し、何かに文字列を設定できます。詳細については、 " MFC リファレンス "CPrintInfo 構造体 を参照してください。

参照

関連項目

印刷および印刷プレビュー

印刷

CView クラス

CDC クラス