void CAutoPFAView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { // TODO: Add your specialized code here and/or call the base class CScrollView::OnPrepareDC(pDC, pInfo); pDC->SetMapMode(MM_ANISOTROPIC); CPoint ptVpOrg(0, 0); ptVpOrg = -GetDeviceScrollPosition(); pDC->SetViewportOrg(ptVpOrg); int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX); int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY); pDC->SetWindowExt(xLogPixPerInch,yLogPixPerInch); pDC->SetViewportExt( (int)(xLogPixPerInch*m_Scale), (int)(yLogPixPerInch*m_Scale)); m_xWindowExt = xLogPixPerInch; m_yWindowExt = yLogPixPerInch; m_xWindowOrg = 0; m_xViewOrg = ptVpOrg.x; m_yWindowOrg = 0; m_yViewOrg = ptVpOrg.y; m_xViewExt = xLogPixPerInch*m_Scale; m_yViewExt = yLogPixPerInch*m_Scale; CAutoPFADoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CFont Font; Font.CreateFontIndirect(&pDoc->m_workSpaceRef.GetFont()); pDC->SelectObject(&Font); pDC->SetBkMode(TRANSPARENT); pDC->SetTextAlign(TA_CENTER); }
void CScrollWnd::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { ASSERT_VALID(pDC); #ifdef _DEBUG if (m_nMapMode == MM_NONE) { TRACE0("Error: must call SetScrollSizes() or SetScaleToFitSize()"); TRACE0("\tbefore painting scroll Wnd.\n"); ASSERT(FALSE); return; } #endif //_DEBUG ASSERT(m_totalDev.cx >= 0 && m_totalDev.cy >= 0); switch (m_nMapMode) { case MM_SCALETOFIT: pDC->SetMapMode(MM_ANISOTROPIC); pDC->SetWindowExt(m_totalLog); // window is in logical coordinates pDC->SetViewportExt(m_totalDev); if (m_totalDev.cx == 0 || m_totalDev.cy == 0) TRACE0("Warning: CScrollWnd scaled to nothing.\n"); break; default: ASSERT(m_nMapMode > 0); pDC->SetMapMode(m_nMapMode); break; } CPoint ptVpOrg(0, 0); // assume no shift for printing if (!pDC->IsPrinting()) { ASSERT(pDC->GetWindowOrg() == CPoint(0,0)); // by default shift Viewport origin in negative direction of scroll ptVpOrg = -GetDeviceScrollPosition(); if (m_bCenter) { CRect rect; GetClientRect(&rect); // if client area is larger than total device size, // override scroll positions to place origin such that // output is centered in the window if (m_totalDev.cx < rect.Width()) ptVpOrg.x = (rect.Width() - m_totalDev.cx) / 2; if (m_totalDev.cy < rect.Height()) ptVpOrg.y = (rect.Height() - m_totalDev.cy) / 2; } } pDC->SetViewportOrg(ptVpOrg); // CWnd::OnPrepareDC(pDC, pInfo); // For default Printing behavior }