CView::OnPrepareDC

呼叫由架構在 OnDraw 成員函式之前顯示於螢幕上呼叫,並在列印和預覽列印句號之前,在這種情況下, OnPrint 成員函式為每個網頁呼叫。

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

參數

  • pDC
    對呈現文件的影像將使用的裝置內容的點。

  • pInfo
    CPrintInfo 的 [結構描述目前列印工作,則為 OnPrepareDC 或列印預覽列印呼叫; m_nCurPage 成員會指定所要列印的。 如果為, OnPrepareDC 顯示於螢幕上,呼叫這個參數是 NULL

備註

如果函式以顯示於螢幕上,呼叫這個函式的預設實作不做任何動作。 不過,這個函式會在衍生類別中覆寫,例如 CScrollView,調整裝置內容的屬性;因此,您應該在您的覆寫逐步一律呼叫基底類別 (Base Class) 實作。

如果函式會呼叫,預設實作會檢查 pInfo 參數儲存網頁資訊。 如果文件的長度未指定, OnPrepareDC 長期假設文件是一頁並停止列印迴圈,一頁列印之後。 函式會將結構的 m_bContinuePrinting 成員停止列印至 迴圈。

覆寫的 OnPrepareDC 原因如下:

  • 調整裝置內容的屬性做為需要為指定的頁面。 例如,在中,如果您需要將對應模式或裝置內容的其他特性,所以請使用這個函式。

  • 執行階段列印分頁。 通常您指定文件的長度,在列印時啟動時,使用 OnPreparePrinting 成員函式。 不過,因此,如果您無法預先知道文件長短 (例如,在列印時,無法判斷的記錄數目從資料庫中) 時,覆寫測試的 OnPrepareDC 對於文件結尾,在列印時。 當有要列印時,設定 CPrintInfo 結構的 m_bContinuePrinting 成員至

  • 一個每頁的傳送逸出程式碼加入至以為基礎的印表機。 若要將訊息從 OnPrepareDC的逸出程式碼中,呼叫 pDC 參數的 Escape 成員函式。

在您覆寫的開頭呼叫 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);
   }
}

需求

Header: afxwin.h

請參閱

參考

CView 類別

階層架構圖表

CDC::Escape

CPrintInfo 結構

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint