16,472
社区成员
发帖
与我相关
我的任务
分享
// CSciplotView 打印
BOOL CGDIModeView::OnPreparePrinting(CPrintInfo* pInfo)
{
CZoomView::SetZoomScale(100);
CPrintDialog m_PrintDlg(FALSE);
HDC m_hDC;
m_hDC=m_PrintDlg.CreatePrinterDC();
LPDEVMODE lpDevMode;
PRINTDLG pd=pInfo->m_pPD->m_pd;
if(AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
lpDevMode=(LPDEVMODE)GlobalLock(pd.hDevMode);
if(lpDevMode)
{
lpDevMode->dmPaperSize=DMPAPER_A4;
lpDevMode->dmOrientation=DMORIENT_LANDSCAPE;//横向打印
/* lpDevMode->dmPaperWidth =1900;
lpDevMode->dmPaperLength =700; */
}
GlobalUnlock(pd.hDevMode);
}
// 默认准备
pInfo->SetMaxPage(1);
pInfo->m_nNumPreviewPages=1;
return DoPreparePrinting(pInfo);
}
void CGDIModeView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(m_totalLog);
//pDC->SetWindowExt(m_totalDev);
CPoint pOrg;
pDC->SetViewportExt(m_totalDev);
pOrg = -GetDeviceScrollPosition();
if(m_bCenter)
{
CRect rect;
GetClientRect(&rect);
if(m_totalDev.cx < rect.Width())
pOrg.x = (rect.Width() - m_totalDev.cx) / 2;
if(m_totalDev.cy < rect.Height())
pOrg.y = (rect.Height() - m_totalDev.cy) / 2;
}
pDC->SetViewportOrg(pOrg);
CScrollView::OnPrepareDC(pDC, pInfo);
//CView::OnPrepareDC(pDC,pInfo);
//pDC->SetMapMode(MM_ANISOTROPIC);
//CSize size(800,600);
//pDC->SetWindowExt(size)
//int x=pDC->GetDeviceCaps(LOGPIXELSX);
//int y=pDC->GetDeviceCaps(LOGPIXELSY);
//long xExt=(long)m_totalLog.cx*x/96;
//long yExt=(long)m_totalLog.cy*y/96;
//pDC->SetViewportExt((int)xExt,(int)yExt);
}
void CGDIModeView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 添加额外的打印前进行的初始化过程
CGDIModeDoc* pDoc = GetDocument();
int npageheight = pDC->GetDeviceCaps(VERTRES);
int npagewidth = pDC->GetDeviceCaps(HORZRES);
//int nmaxpage = max(1,(pDoc-> +npageheight-1)/npageheight);
//pInfo->SetMaxPage(nmaxpage);
}
void CGDIModeView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 添加打印后进行的清理过程
}
void CGDIModeView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 添加打印后进行的清理过程
OnDraw(pDC);
}
void CGDIModeView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 添加打印后进行的清理过程
CView::OnPrepareDC(pDC,pInfo);
pDC->SetMapMode(MM_ANISOTROPIC);
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); //得到屏幕分辨率的宽和高
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
CSize size = CSize(nScreenWidth, nScreenHeight);
//CSize size(800,600);
pDC->SetWindowExt(size);