为什么我设置了打印机为横向打印,打印出来的图像还是不是横过来的啊? // TODO: 在此添加控件通知处理程序代码
Lock();
CPrintDialog dlg(FALSE,PD_PAGENUMS); //定义打印机
dlg.GetDefaults();
dlg.m_nFlags = PD_RETURNDC|PD_PRINTSETUP;
//设置横向打印和纸张类型
CPrintInfo printInfo;
ASSERT(printInfo.m_pPD != NULL); // must be set if (LOWORD(GetCurrentMessage()-> wParam) == ID_FILE_PRINT_DIRECT)
{
CCommandLineInfo* pCmdInfo = AfxGetApp()-> m_pCmdInfo; if (pCmdInfo!= NULL)
{
if (pCmdInfo-> m_nShellCommand == CCommandLineInfo::FilePrintTo)
{
printInfo.m_pPD-> m_pd.hDC = ::CreateDC(pCmdInfo-> m_strDriverName,
pCmdInfo-> m_strPrinterName, pCmdInfo-> m_strPortName, NULL);
if (printInfo.m_pPD-> m_pd.hDC == NULL)
{
AfxMessageBox(AFX_IDP_FAILED_TO_START_PRINT);
return;
} }
} printInfo.m_bDirect = TRUE;
} LPDEVMODE lpDevMode;
//dlg = printInfo.m_pPD->m_pd;
if(AfxGetApp()->GetPrinterDeviceDefaults(&dlg.m_pd))
{
lpDevMode=(LPDEVMODE)GlobalLock(dlg.m_pd.hDevMode);
if(lpDevMode)
{
lpDevMode->dmPaperSize=DMPAPER_A4;
lpDevMode->dmOrientation=DMORIENT_LANDSCAPE;
}
GlobalUnlock(dlg.m_pd.hDevMode);
}
HDC hdcPrinter = dlg.GetPrinterDC(); //获得打印机的句柄 if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
CDC printcd;
printcd.Attach(hdcPrinter);
DOCINFO pdoc;//打印属性
memset(&pdoc, 0, sizeof(pdoc));
pdoc.lpszDocName=L"pdoc";
pdoc.cbSize=sizeof(pdoc);
if (printcd.StartDoc(&pdoc) < 0)
{
MessageBox(_T("Printer wouldn't initalize"));
}
else
{
// start a page
if (printcd.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
printcd.AbortDoc();
}
else
{
SaveBitmapToFile();
PrintBitmap(&printcd);
printcd.EndPage(); //结束这页
printcd.EndDoc();
}
}
LPDEVMODE lpDevMode1 = dlg.GetDevMode();
if(printInfo.m_pPD-> m_pd.hDC)
{
DeleteDC(printInfo.m_pPD-> m_pd.hDC);
}
printcd.Detach();//释放对象
printcd.DeleteDC();//释放设备
UnLock();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货