DEVMODE devTemp = (DEVMODE)dlg.m_pd.hDevMode;
devTemp.dmOrientation = 

解决方案 »

  1.   

    后边再加一句
    dlg.m_pd.hDevMode = (HANDLE)devTemp;
      

  2.   

    答:CPrintDialog prn(FALSE);
    prn.GetDefaults();
    HANDLE pn;
    CString m_devicename;
    DEVMODE *print;
    m_devicename=prn.GetDeviceName();
    BOOL bOk=::OpenPrinter((LPTSTR)(LPCTSTR)m_devicename,&pn,NULL);
    if(!bOk)
    {
    LPVOID lpMsgBuf;
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,NULL,::GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0,NULL);
    ::MessageBox( NULL, (LPTSTR)(LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
    LocalFree( lpMsgBuf );
    return ;
    }
    //返回DEVMODE结构的大小
    int nSize =DocumentProperties (m_hWnd,pn,(LPTSTR)(LPCTSTR)m_devicename,NULL,NULL,0);
    print = (DEVMODE *) malloc(nSize+1);
    if(NULL == print) return ;
    ZeroMemory(print,nSize+1);
    LONG lt=::DocumentProperties(m_hWnd,pn,(LPTSTR)(LPCTSTR)m_devicename,print,NULL,DM_OUT_BUFFER);
    print->dmFields=DM_PAPERSIZE|DM_ORIENTATION;
    print->dmPaperSize=DMPAPER_LETTER;
    print->dmOrientation=DMORIENT_LANDSCAPE; //DMORIENT_PORTRAIT
    //如果使用自定义纸张大小
    //print->dwFields=DM_PAPERSIZE|DM_PAPERLENGTH|DM_PAPERWIDTH|DM_ORIENTATION;
    //print->dmPaperLength=用户输入纸张的长度
    //print->dmPaperWidth=用户输入纸张的宽度
    lt=::DocumentProperties(m_hWnd,pn,(LPTSTR)(LPCTSTR)m_devicename,NULL,print,DM_IN_BUFFER|DM_OUT_BUFFER);
    bOk=::ClosePrinter(pn);
    if(!bOk)
    {
    free(print);
    return ;
    }
    free(print);
      

  3.   

    哇,vcmfc好牛呀,如何你是个ppmm的话,西西
    我肯定已经爱上你了