CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

不惜重金,请教打印高手

楼主xhtwtpdc(余龙)2002-04-04 09:11:16 在 VC/MFC / 基础类 提问

各位大虾:  
          我在做打印程序时遇到了一个问题,代码如下:  
  出现的问题是运行到标识的一步时,弹出出错对话框三个按钮的那种,终止,重试,取消  
  LRESULT   CShenjianView::OnMyPrint(WPARAM   a,LPARAM   b)  
  {  
          CDC   dc;  
  PRINTDLG   pd;  
          LPDEVMODE   lpDevMode;    
          CPrintDialog   printDlg(FALSE);  
          if(AfxGetApp()->GetPrinterDeviceDefaults(&pd))  
          {  
  lpDevMode=(LPDEVMODE)pd.hDevMode;  
          lpDevMode->dmPaperLength=1500;  
  lpDevMode->dmPaperWidth=1100;  
  }          
        printDlg.m_pd.hDevMode=pd.hDevMode;  
        dc.Attach(printDlg.GetPrinterDC());                    
        dc.m_bPrinting   =   TRUE;  
        CString   strTitle;                                                        
          strTitle="您当前打印的是生检质量";  
          DOCINFO   di;                                                                  
          ::ZeroMemory   (&di,   sizeof   (DOCINFO));  
          di.cbSize   =   sizeof   (DOCINFO);  
          di.lpszDocName   =   strTitle;  
          BOOL   bPrintingOK   =   dc.StartDoc(&di);   //运行到这一步时有问题            
          CPrintInfo   Info;  
          OnBeginPrinting(&dc,   &Info);              
          for   (UINT   page   =   Info.GetMinPage();    
                    page   <=   Info.GetMaxPage()   &&   bPrintingOK;    
                    page++)  
          {  
                  dc.StartPage();                                  
                  Info.m_nCurPage   =   page;  
  int   sty;        
                  sty=Stpoint(m_pSet);  
          PrintBiaotou(&dc,sty);  
                  bPrintingOK   =   (dc.EndPage()   >   0);              
    }    
          OnEndPrinting(&dc,   &Info);                                      
          if   (bPrintingOK)  
                  dc.EndDoc();                                                        
          else  
   
                  dc.AbortDoc();                                                    
   
          dc.Detach();    
  return   1;  
  } 问题点数:100、回复次数:17Top

1 楼kingcaiyao(aking)回复于 2002-04-04 10:17:09 得分 0

是不是打印机的问题啊?Top

2 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-04-04 10:24:59 得分 0

HOWTO:   Implement   a   View-Based   Default   Printer   in   Microsoft   Foundation   Classes    
   
  Q193103  
   
   
  --------------------------------------------------------------------------------  
  The   information   in   this   article   applies   to:  
   
  The   Microsoft   Foundation   Classes   (MFC),   used   with:  
  Microsoft   Visual   C++,   32-bit   Editions,   versions   5.0,   6.0  
   
  --------------------------------------------------------------------------------  
   
   
  SUMMARY  
  You   may   sometimes   want   the   "default"   printer   for   your   MFC   application   to   be   other   than   the   actual   system-defined   default   printer.   This   article   shows   how   you   can:    
   
  Retrieve   the   system   default   printer.  
   
   
  Define   your   own   application   default   printer   based   on   the   current   view.  
   
   
  Modify   the   settings   for   this   default   printer.  
   
   
  Properly   use   the   MFC   CPrintDialog   class   to   allow   the   user   to   override   your   application's   default   printer   settings.  
  Top

3 楼xhtwtpdc(余龙)回复于 2002-04-04 11:01:00 得分 0

to   AKing    
      我的打印机绝对没有问题,因为我如果不自定义纸张大小,让用自定义,是可以打印的。Top

4 楼xhtwtpdc(余龙)回复于 2002-04-04 11:13:28 得分 0

to   jiangsheng  
        谢谢你回我的贴子,不过我的打印程序是自定义的,不是基于视结构的,我做了  
  一个菜单……  
        现在的问题是我怎么样的自定义纸张大小。在哪里定义才有效?  
  Top

5 楼panda_w(好想睡啊!)回复于 2002-04-04 13:03:23 得分 0

自定义纸张也需要标准的大小,纸张以及其他的打印信息在DEVMODE结构中设置Top

6 楼panda_w(好想睡啊!)回复于 2002-04-04 13:05:34 得分 0

参考MSDN  
  typedef   struct   _devicemode   {    
  ..........  
      union   {  
          struct   {  
              short   dmOrientation;  
              short   dmPaperSize;  
              short   dmPaperLength;  
              short   dmPaperWidth;  
          };  
        ..........  
  }   DEVMODE;    
  Top

7 楼xhtwtpdc(余龙)回复于 2002-04-04 13:08:26 得分 0

to   panda_w  
  我现在用的打印纸是那种老式的两边有孔的打印纸,应该是符合标准的吧,尺寸  
  是15'x11'Top

8 楼xhtwtpdc(余龙)回复于 2002-04-04 13:10:57 得分 0

to   panda_w  
      定义了DEMODE后,怎样做,传给谁?谢谢你了!Top

9 楼panda_w(好想睡啊!)回复于 2002-04-04 13:21:42 得分 20

不如你看看这个吧  
  http://www.vckbase.com/faq/printing/2.htmTop

10 楼Haiwer(海阔天空)回复于 2002-04-04 13:29:15 得分 0

呵呵,这个不会,不好乱发短消息。Top

11 楼xhtwtpdc(余龙)回复于 2002-04-06 14:29:00 得分 0

我想自定义纸张大小(15'X11'),可是不知  
  dmPaperLength和dmPaperWidth应设为多少。要不要先设置SetMapMode()?Top

12 楼twtpdc(呢呢)回复于 2002-04-06 14:54:52 得分 0

up  
  Top

13 楼twtpdc(呢呢)回复于 2002-04-06 14:56:21 得分 0

up  
  Top

14 楼huqiming(Super)回复于 2002-04-10 12:20:54 得分 80

谢谢!!  
   
  常联系。Top

15 楼huqiming(Super)回复于 2002-04-10 12:22:05 得分 0

谢谢。  
   
  有问题常联系Top

16 楼huqiming(Super)回复于 2002-04-10 12:25:20 得分 0

MSDN的bug害死人那。  
   
  你老兄可以放松一下了。Top

17 楼ji_hui(我是谁)回复于 2002-04-10 12:48:13 得分 0

dmPaperLength和dmPaperWidth为  
  3810   X   2794Top

18 楼huqiming(Super)回复于 2002-04-10 15:29:47 得分 0

忘了近来了。  
   
  Thanks!Top

相关问题

  • 又一打印问题,重金求教。
  • 如何设置打印报表的纸张大小(A4,B5),重金酬谢!
  • 緊急求助﹕哪里有打印機監控軟件﹖或PrinteUsage 有沒有注冊碼﹖﹖﹖重金相求100
  • 重金求解
  • 重金酬谢
  • !!!$$重$$金$$悬$$赏$$!!!
  • 重金悬赏。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • 重金买点子!
  • 重金求答案!!!!
  • 重金求经验

关键词

  • 打印
  • dc
  • mfc
  • microsoft
  • lpdevmode
  • printdlg
  • dmpaperlength
  • dmpaperwidth
  • 自定义
  • 纸张

得分解答快速导航

  • 帖主:xhtwtpdc
  • panda_w
  • huqiming

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo