打印设置的初始化问题 我的打印预览中,默认是纵向的预览,因为要打印报表,纵向一般都打不下,需要手动改成横向,请问可不可以在程序中设置,默认是横向打印啊??谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #define FONTSIZE 14 //获取打印机的设备属性 CPrintDialog dlgPrint(FALSE); //得到当前系统缺省打印机设置 if(!dlgprint.GetDefau1ts() )return FALSE; LPDEVMODE pDM=dlgPrint.GetDevMode(); if (pDM==NULL)return FALSE; //调整打印方向 //pDM->dm0rientation=DMORIENT_LANDSCAPE(横向)‖ DMORIENT_PORTRAIT(纵向); //调整纸张大小 //制式纸张:pDM->dmPaperSize=DMPAPER_A3等; //或自定义大小:单位:1/10毫米 //pDM->dmPaperSize=DMPAPER_USER; //pDM->dmPaperLength=纸张高度; //pDM->dmPaperWidth=纸张宽度; //解锁由CPrintDialog::GetDevMode()封锁的内存 ::GlobalUn1ock(pDM); //联结打印DC,m_hDC是定义为HDC m_hDC的类成员变量 m_hDC=dlgPrint.CreatePrinterDC(); //m_DC是定义为CDC m_DC的类成员变量 if (!m_DC.Attach(m_hDC)return FALSE; //设置打印廯 标志 m_DC.m_bPrinting=TRUE; //根据打印机分辨率建立打印字体 //得到每英寸点数 short cxInch=m_DC.GetDeviceCaps(LOGPIXELSX); short cyInch=m_DC.GetDeviceCaps(LOGPIXELSY); //建立打印字体,m_fontPrint是定义为CFont m_fontPrint的类成员变量 if (!m_fontPrint.CreateFont(MulDiv(FONTSIZE,-cyInch,72), 0,0,0,FW_NORMAL,0,0,0, GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF—DONTCARE,HFONTNAME)................................... 下面是我用ATL写的一个直接设置打印机的函数,你在mfc找到响应的类就可完成我不常来,如果有问题不能保证及时回复//*****************************************************************// 函数名称 :CReportJobInfo::MySetPrinter2//// 功能描述 : 不用设置对话框,直接改变打印机设置//// 返回值 :BOOL//// 参数 :// [LPTSTR pPrinterName] :目标打印机名称// [short dmPaperSize] :纸张大小A3...// [short dmOrientation] :方向// [short dmPaperLength] :自定义尺寸时用// [short dmPaperWidth] :自定义尺寸时用//*****************************************************************BOOL CReportJobInfo::MySetPrinter2(LPTSTR pPrinterName, short dmPaperSize,short dmOrientation,short dmPaperLength, short dmPaperWidth){ CPrinterInfo<1> pi; LONG lSize; HANDLE hPrn; BOOL bClosePrn=FALSE; pi.GetPrinterInfo(m_printer); //换打印机 if(pPrinterName&&lstrcmpi(pPrinterName,pi.m_pi->pName)!=0) { //打开打印机 if(!OpenPrinter(pPrinterName, &hPrn,NULL)) return FALSE; bClosePrn=TRUE; } else hPrn=m_printer; //取最新的打印机信息 pi.GetPrinterInfo(hPrn); //打印机属性 lSize = DocumentProperties(NULL,hPrn,pi.m_pi->pName,NULL,NULL,0); if(lSize<0) { if(bClosePrn) ClosePrinter(hPrn); return FALSE; } DEVMODE * pDM = (DEVMODE *)malloc(lSize); if(pDM==NULL) return FALSE; //取打印机缺省设置 if(DocumentProperties(NULL,hPrn,pi.m_pi->pName,pDM,pDM,DM_OUT_BUFFER)<0) { free(pDM); if(bClosePrn) ClosePrinter(hPrn); return FALSE; } pDM->dmPaperSize = dmPaperSize; pDM->dmFields |= DM_PAPERSIZE; pDM->dmOrientation=dmOrientation; pDM->dmFields |= DM_ORIENTATION; if(dmPaperSize==DMPAPER_USER) { pDM->dmPaperLength =dmPaperLength; //纸张长度 pDM->dmPaperWidth =dmPaperWidth; //纸张宽度 pDM->dmFields |=DM_PAPERLENGTH|DM_PAPERWIDTH; } //设置用户打印设置 if(DocumentProperties(NULL,hPrn,pPrinterName,pDM,pDM,DM_IN_BUFFER|DM_OUT_BUFFER)<0) { free(pDM); if(bClosePrn) ClosePrinter(hPrn); return FALSE; } //设置为当前打印机 if(bClosePrn) m_printer.Attach(hPrn); m_devmode.CopyFromDEVMODE(pDM); free(pDM); return TRUE;} 帮我理解下一段代码的含义 ShowCursor(FALSE)后怎样才能获得当前鼠标样式? ras拨号上网的问题 小问题,高分挑战高手。 ADO的几个问题? 将灵魂出卖给Microsoft?还是选择Sun One? 谁有《基于组件的应用程序设计>这本书? 急急急!在VC7环境下利用Socket编写程序,为什么Debug版本的程序传送的数据不是乱码,而Release版本的程序传送的是乱码? *.olb是什么文件? 求助:ADO连接SQL成功,但只能打开一个表 提问关于Using mfc与Not using mfc ListCtrl控件的使用
//获取打印机的设备属性
CPrintDialog dlgPrint(FALSE);
//得到当前系统缺省打印机设置
if(!dlgprint.GetDefau1ts() )return FALSE;
LPDEVMODE pDM=dlgPrint.GetDevMode();
if (pDM==NULL)return FALSE;
//调整打印方向
//pDM->dm0rientation=DMORIENT_LANDSCAPE(横向)‖
DMORIENT_PORTRAIT(纵向);
//调整纸张大小
//制式纸张:pDM->dmPaperSize=DMPAPER_A3等;
//或自定义大小:单位:1/10毫米
//pDM->dmPaperSize=DMPAPER_USER;
//pDM->dmPaperLength=纸张高度;
//pDM->dmPaperWidth=纸张宽度;
//解锁由CPrintDialog::GetDevMode()封锁的内存
::GlobalUn1ock(pDM);
//联结打印DC,m_hDC是定义为HDC m_hDC的类成员变量
m_hDC=dlgPrint.CreatePrinterDC();
//m_DC是定义为CDC m_DC的类成员变量
if (!m_DC.Attach(m_hDC)return FALSE;
//设置打印廯 标志
m_DC.m_bPrinting=TRUE;
//根据打印机分辨率建立打印字体
//得到每英寸点数
short cxInch=m_DC.GetDeviceCaps(LOGPIXELSX);
short cyInch=m_DC.GetDeviceCaps(LOGPIXELSY);
//建立打印字体,m_fontPrint是定义为CFont m_fontPrint的类成员变量
if (!m_fontPrint.CreateFont(MulDiv(FONTSIZE,-cyInch,
72),
0,0,0,FW_NORMAL,0,0,0,
GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHA
RACTER_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH|FF—DONTCARE,HFONTNAME)
...................................
我不常来,如果有问题不能保证及时回复
//*****************************************************************
// 函数名称 :CReportJobInfo::MySetPrinter2
//
// 功能描述 : 不用设置对话框,直接改变打印机设置
//
// 返回值 :BOOL
//
// 参数 :
// [LPTSTR pPrinterName] :目标打印机名称
// [short dmPaperSize] :纸张大小A3...
// [short dmOrientation] :方向
// [short dmPaperLength] :自定义尺寸时用
// [short dmPaperWidth] :自定义尺寸时用
//*****************************************************************BOOL CReportJobInfo::MySetPrinter2(LPTSTR pPrinterName, short dmPaperSize,short dmOrientation,short dmPaperLength, short dmPaperWidth)
{
CPrinterInfo<1> pi;
LONG lSize;
HANDLE hPrn;
BOOL bClosePrn=FALSE; pi.GetPrinterInfo(m_printer);
//换打印机
if(pPrinterName&&lstrcmpi(pPrinterName,pi.m_pi->pName)!=0)
{
//打开打印机
if(!OpenPrinter(pPrinterName, &hPrn,NULL))
return FALSE;
bClosePrn=TRUE;
}
else
hPrn=m_printer; //取最新的打印机信息
pi.GetPrinterInfo(hPrn);
//打印机属性
lSize = DocumentProperties(NULL,hPrn,pi.m_pi->pName,NULL,NULL,0);
if(lSize<0)
{
if(bClosePrn) ClosePrinter(hPrn);
return FALSE;
} DEVMODE * pDM = (DEVMODE *)malloc(lSize);
if(pDM==NULL)
return FALSE; //取打印机缺省设置
if(DocumentProperties(NULL,hPrn,pi.m_pi->pName,pDM,pDM,DM_OUT_BUFFER)<0)
{
free(pDM);
if(bClosePrn) ClosePrinter(hPrn);
return FALSE;
} pDM->dmPaperSize = dmPaperSize;
pDM->dmFields |= DM_PAPERSIZE;
pDM->dmOrientation=dmOrientation;
pDM->dmFields |= DM_ORIENTATION; if(dmPaperSize==DMPAPER_USER)
{
pDM->dmPaperLength =dmPaperLength; //纸张长度
pDM->dmPaperWidth =dmPaperWidth; //纸张宽度
pDM->dmFields |=DM_PAPERLENGTH|DM_PAPERWIDTH;
} //设置用户打印设置
if(DocumentProperties(NULL,hPrn,pPrinterName,pDM,pDM,DM_IN_BUFFER|DM_OUT_BUFFER)<0)
{
free(pDM);
if(bClosePrn) ClosePrinter(hPrn);
return FALSE;
} //设置为当前打印机
if(bClosePrn) m_printer.Attach(hPrn);
m_devmode.CopyFromDEVMODE(pDM);
free(pDM);
return TRUE;
}