Share via


CView::OnPrepareDC

OnPrint のメンバー関数が印刷や印刷プレビュー中にページごとに呼び出される前に OnDraw のメンバー関数の前に、フレームワークによって呼び出されます画面の表示のために呼び出されます。

virtual void OnPrepareDC(
   CDC* pDC,
   CPrintInfo* pInfo = NULL 
);

パラメーター

  • pDC
    ドキュメントでのイメージの表示に使用されるデバイス コンテキストへのポインター。

  • pInfo
    CPrintInfo をポイントし、構成します OnPrepareDC が印刷や印刷プレビュー用にを呼び出すと、現在の印刷ジョブを記述する; m_nCurPage のメンバーは、印刷するページとして指定します。このパラメーターは OnPrepareDC が画面の表示のためにを呼び出すと null です。

解説

この関数の既定の実装は、関数が画面の表示のためにを呼び出すと、何も実行されません。ただし、デバイス コンテキストの属性を調整するには、派生クラスでこの関数は、CScrollViewなど、オーバーライドされています; したがって、は、オーバーライド関数の先頭で基本クラスの実装を必ずを呼び出す必要があります。

関数が印刷に呼び出すと、既定の実装では pInfo のパラメーターに格納されているページ情報をチェックします。ドキュメントの長さが指定されていない場合、は 1 OnPrepareDC のページが印刷されると 1 ページにあるドキュメントが長いと想定し、印刷ループを停止します。関数は FALSE構造体への m_bContinuePrinting のメンバーを設定することによって、印刷ループを停止します。

次のいずれかの OnPrepareDC をオーバーライドします:

  • デバイス コンテキストの属性を指定したページに必要に応じて調整します。たとえばデバイス コンテキストのマップ モードまたはそのほかの特性を設定する必要がある場合は、この関数を使用します。

  • 印刷時の改ページ調整を実行します。通常、印刷が開始されると OnPreparePrinting のメンバー関数を使用してドキュメントの長さを指定します。ただし、ドキュメントが (たとえば、) がどの程度あるか、事前にわかっている印刷しているデータベースからの集合のレコード番号を印刷するときは、ドキュメントの末尾のテスト対象オーバーライド OnPrepareDC。印刷されるドキュメントでこれ以上ない場合 FALSECPrintInfo の構造体の m_bContinuePrinting のメンバーをに設定します。

  • エスケープ コードをページごとに送信する基本のプリンター。OnPrepareDCからエスケープ コードを送信するには、pDC のパラメーターの [エスケープ] のメンバー関数を呼び出します。

は、オーバーライド関数の先頭に OnPrepareDC の基本クラスのバージョンを呼び出します。

使用例

void CMyView::OnPrepareDC (CDC* pDC, CPrintInfo* pInfo)
{
   CView::OnPrepareDC(pDC, pInfo);

   // If we are printing, set the mapmode and the window
   // extent properly, then set viewport extent. Use the
   // SetViewportOrg member function in the CDC class to
   // move the viewport origin to the center of the view.

   if(pDC->IsPrinting()) // Is the DC a printer DC.
   {
      CRect rect;
      GetClientRect (&rect);

      pDC->SetMapMode(MM_ISOTROPIC);
      CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
      ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
      CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
      ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
      CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
   }
}

必要条件

ヘッダー: afxwin.h

参照

関連項目

CView クラス

階層図

CDC::Escape

CPrintInfo 構造体

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint