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