void CEditView::OnPrint(CDC* pDC, CPrintInfo* pInfo) { ASSERT_VALID(this); ASSERT_VALID(pDC); ASSERT(pInfo != NULL); ASSERT(pInfo->m_bContinuePrinting); CFont* pOldFont = NULL; if (m_hPrinterFont != NULL) pOldFont = pDC->SelectObject(CFont::FromHandle(m_hPrinterFont)); pDC->SetBkMode(TRANSPARENT); UINT nPage = pInfo->m_nCurPage; ASSERT(nPage <= (UINT)m_aPageStart.GetSize()); UINT nIndex = m_aPageStart[nPage-1]; // print as much as possible in the current page. nIndex = PrintInsideRect(pDC, pInfo->m_rectDraw, nIndex, GetBufferLength()); if (pOldFont != NULL) pDC->SelectObject(pOldFont); // update pagination information for page just printed if (nPage == (UINT)m_aPageStart.GetSize()) { if (nIndex < GetBufferLength()) m_aPageStart.Add(nIndex); } else { ASSERT(nPage+1 <= (UINT)m_aPageStart.GetSize()); ASSERT(nIndex == m_aPageStart[nPage+1-1]); } }
void CEditView::OnPrint( CDC *pDC, CPrintInfo *pInfo ) /****************************************************/ { ASSERT( pDC != NULL ); ASSERT( pInfo != NULL ); HFONT hOldFont = NULL; if( m_hPrinterFont != NULL ) { hOldFont = (HFONT)::SelectObject( pDC->m_hDC, m_hPrinterFont ); } int n = m_aPageStart.GetAt( pInfo->m_nCurPage - 1 ); n = PrintInsideRect( pDC, pInfo->m_rectDraw, n, GetBufferLength() ); if( pInfo->m_nCurPage == m_aPageStart.GetCount() && n < GetBufferLength() ) { m_aPageStart.Add( n ); } if( hOldFont != NULL ) { ::SelectObject( pDC->m_hDC, hOldFont ); } }