zoukankan      html  css  js  c++  java
  • MFC覆盖OnPrepareDC实现“所见即所得”打印

    附件下载:http://files.cnblogs.com/mengdejun/print.zip

    void CPrintView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
    {
        // TODO: Add your specialized code here and/or call the base class
        //设置打印环境坐标转换
        pDC->SetMapMode(MM_ANISOTROPIC);
        int screenwidth_real=GetSystemMetrics(SM_CXSCREEN);
        int screenheight_real=GetSystemMetrics(SM_CYSCREEN);
        CSize winSize=CSize(screenwidth_real,screenheight_real);
        //设置窗口大小
        pDC->SetWindowExt(winSize);
        long xLogPixPerInch,yLogPixPerInch;
        //获得设备坐标即每英寸多少像素
        xLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSX);
        yLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSY);
        //设置视口大小 96%
        pDC->SetViewportExt(xLogPixPerInch*winSize.cx/96,yLogPixPerInch*winSize.cy/96);
        CView::OnPrepareDC(pDC, pInfo);
    }

    MFC横向打印

    BOOL CPrintView::OnPreparePrinting(CPrintInfo* pInfo)
    {
        //下列语句使打印机默认横向打印
        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;//横向打印
            }
            GlobalUnlock(pd.hDevMode);
        }
        //上述语句使打印机默认横向打印
        return DoPreparePrinting(pInfo);
    }

     

  • 相关阅读:
    WiFi热点
    计算器
    flask的使用
    Python logging
    串口
    C# 定时器
    C# 控件
    cookie 和 session
    文件
    Linux命令
  • 原文地址:https://www.cnblogs.com/mengdejun/p/4001371.html
Copyright © 2011-2022 走看看