VC打印问题,请高手赐教,在线给分,救命啊。全部分都给你了 请问我该怎么自定义打印纸的大小?并且能够在打印预览的时候可以看到效果?例如我在对话框里选择了20 x 20 cm大小的纸张,那么就可以在打印预览的时候看到这个正方形的打印纸张?最好有源码相送([email protected]) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看这个对你有没有用//打印机的初始化设置 CPrintDialog dlg(FALSE,PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,this); CRuixingZJApp* pApp = static_cast<CRuixingZJApp*>( ::AfxGetApp() ); long Len; WORD nWord = 0; HANDLE hPrinter; DEVMODE* pDevMode; DEVNAMES* lpDevNames; LPTSTR lpszDeviceName; /////////////////////////////////////////////////////////////////// if(pApp->GetPrinterDeviceDefaults(&dlg.m_pd) == 0) { ::AfxMessageBox("错误!当前没有连接打印机!",MB_OK); return; } pDevMode = (DEVMODE*)GlobalLock(dlg.m_pd.hDevMode); lpDevNames = (LPDEVNAMES)GlobalLock(dlg.m_pd.hDevNames); lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset; if (::OpenPrinter((char *) pDevMode->dmDeviceName, &hPrinter, NULL) == FALSE) return; Len = DocumentProperties(NULL, NULL, lpszDeviceName, pDevMode, NULL, 0); pDevMode->dmPaperSize = DMPAPER_A4; lstrcpy((char *)pDevMode->dmFormName,"A4 210 *297 mm"); Len = DocumentProperties(NULL, hPrinter, lpszDeviceName, NULL, pDevMode, DM_IN_BUFFER); GlobalUnlock(dlg.m_pd.hDevMode); GlobalUnlock(dlg.m_pd.hDevNames); 是啊,但是都没有用啊,我都用了,都不能改变打印机的默认设置,纸张一直用的是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); } webbrowser中实现ctrl+鼠标滚轮实现网页的缩放 vc用到的控件可以用其它语言(如LABVIEW或delphi)开发吗? 如何把本地机器上的文件Copy到一个域里的其它机器上。 那些简体和繁体的部首如何显示出来呢? 【申请】申请界面版斑竹 是不是WM_PAINT消息的wParam参数和lParam参数根本无用呢? 如何在CFileDialog中选择多个文件? 请教:我用多路调制解调器传输数据,采用什么方案? 用过CreateWaitableTimer的大虾请帮个忙 请问在线程中怎样使用winsock?? 关于打印的问题,请各位高手赐教,高分相送 VC打印问题,请高手赐教,一定给分
//打印机的初始化设置
CPrintDialog dlg(FALSE,PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,this);
CRuixingZJApp* pApp = static_cast<CRuixingZJApp*>( ::AfxGetApp() );
long Len;
WORD nWord = 0;
HANDLE hPrinter;
DEVMODE* pDevMode;
DEVNAMES* lpDevNames;
LPTSTR lpszDeviceName;
///////////////////////////////////////////////////////////////////
if(pApp->GetPrinterDeviceDefaults(&dlg.m_pd) == 0)
{
::AfxMessageBox("错误!当前没有连接打印机!",MB_OK);
return;
}
pDevMode = (DEVMODE*)GlobalLock(dlg.m_pd.hDevMode);
lpDevNames = (LPDEVNAMES)GlobalLock(dlg.m_pd.hDevNames);
lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset; if (::OpenPrinter((char *) pDevMode->dmDeviceName, &hPrinter, NULL) == FALSE)
return;
Len = DocumentProperties(NULL, NULL, lpszDeviceName, pDevMode, NULL, 0);
pDevMode->dmPaperSize = DMPAPER_A4;
lstrcpy((char *)pDevMode->dmFormName,"A4 210 *297 mm"); Len = DocumentProperties(NULL, hPrinter, lpszDeviceName, NULL, pDevMode, DM_IN_BUFFER);
GlobalUnlock(dlg.m_pd.hDevMode);
GlobalUnlock(dlg.m_pd.hDevNames);
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);
}