CView::OnPreparePrinting
更新 : 2007 年 11 月
ドキュメントが印刷またはプレビューされる前に、フレームワークが呼び出します。
virtual BOOL OnPreparePrinting(
CPrintInfo* pInfo
);
パラメータ
- pInfo
現在の印刷ジョブを表す CPrintInfo 構造体へのポインタ。
戻り値
印刷が開始された場合は、0 以外を返します。印刷ジョブがキャンセルされた場合は、0 を返します。
解説
既定の実装では、何も行われません。
印刷および印刷プレビューを有効にするには、この関数をオーバーライドする必要があります。パラメータ pInfo の指定を渡して、DoPreparePrinting メンバ関数を呼び出してください。その後、この関数の戻り値を返します。DoPreparePrinting は [印刷] ダイアログ ボックスを表示し、プリンタのデバイス コンテキストを作成します。既定とは違った値を使って [印刷] ダイアログ ボックスを初期化する場合は、pInfo のメンバに値を設定します。たとえば、ドキュメントの長さがわかっているときは、DoPreparePrinting を呼び出す前に pInfo の SetMaxPage メンバ関数に値を渡してください。この値は、[印刷] ダイアログ ボックスの [印刷する範囲] の [ページまで:] のボックスに表示されます。
DoPreparePrinting は、プレビュー ジョブでは [印刷] ダイアログ ボックスを表示しません。印刷ジョブで [印刷] ダイアログ ボックスが表示されないようにするためには、pInfo の m_bPreview メンバが FALSE であることを調べ、DoPreparePrinting に渡す前に TRUE に設定します。関数の終了後、FALSE に戻します。
プリンタ デバイス コンテキストを表す CDC オブジェクトへのアクセスを要求する初期処理を実行する場合 (たとえば、ドキュメントの長さを指定する前に、ページサイズを知りたいときなど) は、OnBeginPrinting メンバ関数をオーバーライドしてください。
m_nNumPreviewPages メンバまたは m_strPageDesc メンバのパラメータ pInfo に値を設定するときは、先に DoPreparePrinting を呼び出してください。DoPreparePrinting メンバ関数は、m_nNumPreviewPages をアプリケーションの .INI ファイルで得た値に設定し、m_strPageDesc を既定値に設定します。
使用例
フレームワークが [印刷] ダイアログ ボックスを表示してプリンタ DC を作成するように、OnPreparePrinting をオーバーライドし、DoPreparePrinting を呼び出します。
BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
return CEditView::DoPreparePrinting(pInfo);
}
ドキュメントのページ数がわかっている場合は、DoPreparePrinting を呼び出す前に、OnPreparePrinting で最大ページ数を設定します。フレームワークは、[印刷] ダイアログ ボックスの [ページまで] ボックスで最大ページ数を表示します。
BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
//The document has 2 pages.
pInfo->SetMaxPage(2);
return CView::DoPreparePrinting(pInfo);
}
必要条件
ヘッダー : afxwin.h