VC打印问题,请高手赐教,一定给分 请问我改怎么自定义打印纸张大小,就是在打印预览的时候可以看到我设置好的纸张大小,例如我设置的纸张是(500 X 500),那么就可以看到一个正方形的打印预览图,并且打印也会按照我设置的大小打印最好是有源码相送([email protected]) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看一下这些代码,主要是 DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(dlg.m_pd.hDevMode); pDevMode->dmPaperLength=5000; pDevMode->dmPaperWidth=5000; ::GlobalUnlock(dlg.m_pd.hDevMode);void PrintTest(){ CPrintDialog dlg(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE); if(dlg.GetDefaults()) { DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(dlg.m_pd.hDevMode); pDevMode->dmPaperLength=5000; pDevMode->dmPaperWidth=5000; ::GlobalUnlock(dlg.m_pd.hDevMode); DOCINFO di; memset( &di, 0, sizeof(DOCINFO) ); di.cbSize = sizeof(DOCINFO); di.lpszDocName = "Printing Test"; di.lpszOutput = (LPTSTR) NULL; di.fwType = 0; HDC hDC=dlg.CreatePrinterDC(); CDC dc; dc.Attach(hDC); dc.StartDoc(&di); dc.StartPage(); dc.MoveTo(0,0); dc.LineTo(1000,1000); dc.EndPage(); dc.EndDoc(); dc.DeleteDC(); } } 忘掉一句,使用自定义纸张,必须设置pDevMode->dmPaperSize=0; pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式 CSize size = CSize(500, 500); pDC->SetWindowExt(size); //确定窗口大小 greensofter(勇敢一点) 你的方式只是设置DC范围,不是设置纸张大小啊 是啊,但是都没有用啊,我都用了,都不能改变打印机的默认设置,纸张一直用的是8.5 x 11 in 即使我把dmPaperSize 设置为0然后把dmPelsWidth和dmPelsHeight设置为需要的大小到打印预览里面,仍然不起作用 我这里测试通过的一段代码,你给放到 C****App::InitInstance()的最后测试一下 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); pDevMode->dmFields|=DM_PAPERSIZE; pDevMode->dmFields|=DM_PAPERLENGTH; pDevMode->dmFields|=DM_PAPERWIDTH;// pDevMode->dmOrientation=2; pDevMode->dmPaperSize=0; pDevMode->dmPaperLength=2000; pDevMode->dmPaperWidth=2000; ::GlobalUnlock(pd.hDevMode); } 关于管道对象句柄的问题 (由于上个帖子不能正常打开这个是重发的) VC++ 6.0 转 VS2005 请问vc6现在支持的最新intel的编译器是什么版本? 求助!挺急的! 那位高手帮我看看这个困扰了我几天的问题??????? 帮忙说一下:CListBox的成员函数。小弟是菜鸟。请多指点。 如何退出(和线程有关)????(在线等待) c++优点(三)Up无分 路过的兄弟姐妹,帮帮忙! 找人从美国带回来一本C++ Primer 3/e,真爽! VC打印问题,请高手赐教,在线给分,救命啊。全部分都给你了 我昨天面试别人的时候,问的几个问题
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(dlg.m_pd.hDevMode);
pDevMode->dmPaperLength=5000;
pDevMode->dmPaperWidth=5000;
::GlobalUnlock(dlg.m_pd.hDevMode);void PrintTest(){
CPrintDialog dlg(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE);
if(dlg.GetDefaults())
{
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(dlg.m_pd.hDevMode);
pDevMode->dmPaperLength=5000;
pDevMode->dmPaperWidth=5000;
::GlobalUnlock(dlg.m_pd.hDevMode);
DOCINFO di;
memset( &di, 0, sizeof(DOCINFO) );
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Printing Test";
di.lpszOutput = (LPTSTR) NULL;
di.fwType = 0;
HDC hDC=dlg.CreatePrinterDC();
CDC dc;
dc.Attach(hDC);
dc.StartDoc(&di);
dc.StartPage();
dc.MoveTo(0,0);
dc.LineTo(1000,1000);
dc.EndPage();
dc.EndDoc();
dc.DeleteDC();
}
}
CSize size = CSize(500, 500);
pDC->SetWindowExt(size); //确定窗口大小
你的方式只是设置DC范围,不是设置纸张大小啊
8.5 x 11 in 即使我把dmPaperSize 设置为0然后把dmPelsWidth和dmPelsHeight设置为需要的大小
到打印预览里面,仍然不起作用
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);
pDevMode->dmFields|=DM_PAPERSIZE;
pDevMode->dmFields|=DM_PAPERLENGTH;
pDevMode->dmFields|=DM_PAPERWIDTH;
// pDevMode->dmOrientation=2;
pDevMode->dmPaperSize=0;
pDevMode->dmPaperLength=2000;
pDevMode->dmPaperWidth=2000;
::GlobalUnlock(pd.hDevMode);
}