如何用代码设置默认打印机的纸张大小(mfc)

zuhuisu 2002-03-30 09:12:55
各位大侠:
我在编写打印程序时需要在程序中直接设置系统默认打印机的纸张大小,如下程序,程序是MFC框架的
在VIEW类的OnPreparePrinting中有如下代码:
BOOL CPDT10View::OnPreparePrinting(CPrintInfo* pInfo)
{
CPrintDialog pdlg(FALSE);
LPDEVMODE pdev=NULL;
pdlg.GetDefaults(); //取提默认打印机的配置
pdev=::GlobalLock(pdlg.GetDevMode());
if(pdev){
pdev->dmPaperSize=0;
pdev->dmPaperLength=1000;
pdev->dmPaperWidth=1000;
pdev->dmFields = mode->dmFields| DM_PAPERSIZE |DM_PAPERWIDTH| DM_PAPERLENGTH;
::GlobalUnlock(pDdlg.hDevMode);
AfxGetApp()->SelectPrinter(pdlg.hDevNames,pdlg.hDevMode);
}
return DoPreparePrinting(pInfo);
}

问题是这个代码在WINDOW2000下运行正确,纸张的大小也被设置为(1000,1000),
但是在WIN9X下没有反应纸张的大小没有修改。
...全文
377 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuhuisu 2002-04-20
  • 打赏
  • 举报
回复
没有INCLUDE WINSHOOP。H
zuhuisu 2002-04-09
  • 打赏
  • 举报
回复
::OpenPrinter()函数为什么编译的时候有错:
error C2039: 'OpenPrinter' : is not a member of '`global namespace''
zuhuisu 2002-04-09
  • 打赏
  • 举报
回复
dmPaperLength是0.1MM大小,
CDC::ResetDC(DevMode)(OnPreparePrinting(CPrintInfo* pInfo))在这个过程中还没有创建打印机DC,
我是想把默认的打印机设置修改了,也就是显示打印设置对话框时打印机的默认项是我程序中设置的,此时用户也可以在已经显示的对话框中"再次"修改设置,然后打印。
之所以要这样设计是因为打印纸的大小是从一个打印文件中读取的
捕鲸叉 2002-04-06
  • 打赏
  • 举报
回复
CDC::ResetDC(DevMode)
twtpdc 2002-04-05
  • 打赏
  • 举报
回复
我也有一点问题,如这位兄台,我想自定义纸张大小(15'X11'),可是不知
dmPaperLength和dmPaperWidth应设为多少。要不要先设置SetMapMode()?
fwx945 2002-03-31
  • 打赏
  • 举报
回复
直接修改pInfo->m_pPD->m_pd.hDevMode试试看?
zuhuisu 2002-03-30
  • 打赏
  • 举报
回复
dxhdxh2k(dxhdxh) :up是什么东东
dxhdxh2k 2002-03-30
  • 打赏
  • 举报
回复
up,

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧