不会吧~~~应该有的....devmode.dmDuplex=DMDUP_HORIZONTAL;就是横向打印的...好象是,大家可以看看DEVMODE结构就知道了。

解决方案 »

  1.   

    在你的OnPreparePrinting函数中写上以下代码看看:
    LPDEVMODE  lpDevMode;
    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);
    }
      

  2.   

    我有个问题,和up的一样的代码,但打印出的图形比设置的小,大小范围都小了许多,这是为什么???    CDC dc;
        LPDEVMODE lpDevMode;
        CPrintDialog printDlg(FALSE);
        if(AfxGetApp()->GetPrinterDeviceDefaults(&printDlg.m_pd))
        {
          if(lpDevMode=(LPDEVMODE)GlobalLock(printDlg.m_pd.hDevMode))
          {
            lpDevMode->dmPaperSize=DMPAPER_A5;
            lpDevMode->dmOrientation=DMORIENT_LANDSCAPE;//水平
    //        lpDevMode->dmPaperSize=256;//自定义页面大小是必须加的选项,256自定义纸张大小
      //      lpDevMode->dmPaperLength=420;//长
        //    lpDevMode->dmPaperWidth=595;//宽      }
         GlobalUnlock(printDlg.m_pd.hDevMode);
        }
        if (printDlg.DoModal() != IDOK)             // Get printer settings from user
            return; 
        dc.Attach(printDlg.GetPrinterDC());         // attach a printer DC
        dc.m_bPrinting = TRUE;