在网上查了下资料,大概是从下面的设置入手,可是没有成功,请各位指教PRINTDLG pd;
pd.lStructSize=(DWORD)sizeof(PRINTDLG);
BOOL bRet=AfxGetApp()->GetPrinterDeviceDefaults(&pd); if(bRet)
{
// protect memory handle with ::GlobalLock and ::GlobalUnlock
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(pd.hDevMode);
// set orientation to landscape
//pDevMode->dmOrientation=DMORIENT_LANDSCAPE;
//pDevMode->dmFields = DM_DUPLEX;
pDevMode->dmDuplex = DMDUP_HORIZONTAL;
::GlobalUnlock(pd.hDevMode);
}
pd.lStructSize=(DWORD)sizeof(PRINTDLG);
BOOL bRet=AfxGetApp()->GetPrinterDeviceDefaults(&pd); if(bRet)
{
// protect memory handle with ::GlobalLock and ::GlobalUnlock
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(pd.hDevMode);
// set orientation to landscape
//pDevMode->dmOrientation=DMORIENT_LANDSCAPE;
//pDevMode->dmFields = DM_DUPLEX;
pDevMode->dmDuplex = DMDUP_HORIZONTAL;
::GlobalUnlock(pd.hDevMode);
}
SetupDlg.GetDefaults();
DEVMODE FAR* pDevMode=(DEVMODE FAR*)::GlobalLock(SetupDlg.m_pd.hDevMode);
if (DMORIENT_LANDSCAPE != pDevMode->dmOrientation)
{
pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
if (SetupDlg.m_pd.hDC)
DeleteObject(SetupDlg.m_pd.hDC);
SetupDlg.m_pd.hDC = SetupDlg.CreatePrinterDC(); //重点在这里
}
::GlobalUnlock(SetupDlg.m_pd.hDevMode);你上面的代码我不熟悉,给你一下我实现的做参考。
应该是先打印奇数页或者偶数页,然后再人工把先前打印好的纸张反过来再打印另一面吧?LiteEdit这个小软件是支持双面打印的,我一直都在用来看代码和它的“在文件中查找”功能,你可以参考一下。
软件下载:http://www.newhua.com/soft/17060.htm
源代码下载:http://www.vckbase.com/document/viewdoc/?id=1565
华军软件园和VCKBASE收钱?我未听过。
·DMDUP_SIMPLEX
·DMDUP_HORIZONTAL
·DMDUP_VERTICAL
·DMDUP_HORIZONTAL
·DMDUP_VERTICAL 都test,No行