转自 http://mywallop.com/Public.aspx?id=3564836&ty=ly
2种设置打印方向的方法.
1.
CPrintInfo printInfo;
AfxGetApp()->GetPrinterDeviceDefaults(&printInfo.m_pPD->m_pd);
if (printInfo.m_pPD->m_pd.hDC == NULL)
{
// call CreatePrinterDC if DC was not created by above
printInfo.m_pPD->CreatePrinterDC();
}
CDC dcPrint;
dcPrint.Attach(printInfo.m_pPD->m_pd.hDC); // attach printer dc
dcPrint.m_bPrinting = TRUE;
LPDEVMODE pDevMode;
pDevMode=printInfo.m_pPD->GetDevMode();
if(pDevMode!=NULL)
{
pDevMode->dmOrientation=DMORIENT_LANDSCAPE;
dcPrint.ResetDC(pDevMode);
}
2.
void CMyApp::SetLandscapeMode()
{
PRINTDLG pd;
pd.lStructSize=(DWORD)sizeof(PRINTDLG);
BOOL bRet=GetPrinterDeviceDefaults(&pd);
if(bRet)
{
// protect memory handle with ::GlobalLock and ::GlobalUnlock
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(m_hDevMode);
// set orientation to landscape
pDevMode->dmOrientation=DMORIENT_LANDSCAPE;
::GlobalUnlock(m_hDevMode);
}
}
其实两种方法调用的应该都是基于方法2的.