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

我要在单文档中实现打印,但不知如何实现打印纸大小的设置。(比方说给定长度和宽度)。

楼主cn2000(菜鸟2000)2001-03-11 18:41:00 在 VC/MFC / 基础类 提问

问题点数:45、回复次数:9Top

1 楼cn2000(菜鸟2000)回复于 2001-03-11 21:56:00 得分 0

怎么没人响应,都和我一样菜吗。Top

2 楼panda_w(好想睡啊!)回复于 2001-03-12 08:55:00 得分 15

        CString   strDriverName;  
          CString   strPrinterName;  
          CString   strPortName;  
   
          DEVMODE*   pMode   =   NULL;  
   
          if   (app->printJob->GetSelectedPrinter(strDriverName,   strPrinterName,  
  strPortName,   &pMode))  
          {  
                  ASSERT(pMode   !=   NULL);  
   
                  pMode->dmTTOption         =   DMTT_DOWNLOAD;  
                  pMode->dmOrientation   =   DMORIENT_LANDSCAPE;  
                  pMode->dmColor               =   DMCOLOR_MONOCHROME;  
                  pMode->dmPaperSize       =   DMPAPER_A4;  
   
                  if   (dwPrinter   <   cReturned)  
                  {  
                          strDriverName     =   ppri2[dwPrinter].pDriverName;  
                          strPrinterName   =   ppri2[dwPrinter].pPrinterName;  
                          strPortName         =   ppri2[dwPrinter].pPortName;  
                  }  
   
                  app->printJob->SelectPrinter(strDriverName,   strPrinterName,   strPortName,  
  pMode);  
          Top

3 楼cn2000(菜鸟2000)回复于 2001-06-18 21:36:00 得分 0

能说得详细点儿吗?Top

4 楼cn2000(菜鸟2000)回复于 2001-06-19 20:27:00 得分 0

能说得详细点儿吗?   Top

5 楼cn2000(菜鸟2000)回复于 2001-06-19 21:20:00 得分 0

网上无高人吗?Top

6 楼cn2000(菜鸟2000)回复于 2001-06-21 20:41:00 得分 0

网上无高人吗?   Top

7 楼vcmfc(【痛苦的虫虫】)回复于 2001-06-21 21:24:00 得分 30

3.在应用程序中设置打印纸张类型。  
   
  答:CPrintDialog   prn(FALSE);  
  prn.GetDefaults();  
  HANDLE   pn;  
  CString   m_devicename;  
  DEVMODE   *print;  
  m_devicename=prn.GetDeviceName();  
  BOOL   bOk=::OpenPrinter((LPTSTR)(LPCTSTR)m_devicename,&pn,NULL);  
  if(!bOk)  
  {  
  LPVOID   lpMsgBuf;  
  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER   |   FORMAT_MESSAGE_FROM_SYSTEM   |    
  FORMAT_MESSAGE_IGNORE_INSERTS,NULL,::GetLastError(),  
  MAKELANGID(LANG_NEUTRAL,   SUBLANG_DEFAULT),(LPTSTR)   &lpMsgBuf,0,NULL);  
  ::MessageBox(   NULL,   (LPTSTR)(LPCTSTR)lpMsgBuf,   "Error",   MB_OK   |   MB_ICONINFORMATION   );  
  LocalFree(   lpMsgBuf   );  
  return   ;  
  }  
  //返回DEVMODE结构的大小  
  int   nSize   =DocumentProperties   (m_hWnd,pn,(LPTSTR)(LPCTSTR)m_devicename,NULL,NULL,0);  
  print   =   (DEVMODE   *)   malloc(nSize+1);  
  if(NULL   ==   print)   return   ;  
  ZeroMemory(print,nSize+1);  
  LONG   lt=::DocumentProperties(m_hWnd,pn,(LPTSTR)(LPCTSTR)m_devicename,print,NULL,DM_OUT_BUFFER);  
  print->dmFields=DM_PAPERSIZE|DM_ORIENTATION;  
  print->dmPaperSize=DMPAPER_LETTER;  
  print->dmOrientation=DMORIENT_LANDSCAPE;   //DMORIENT_PORTRAIT  
  //如果使用自定义纸张大小  
  //print->dwFields=DM_PAPERSIZE|DM_PAPERLENGTH|DM_PAPERWIDTH|DM_ORIENTATION;  
  //print->dmPaperLength=用户输入纸张的长度  
  //print->dmPaperWidth=用户输入纸张的宽度  
  lt=::DocumentProperties(m_hWnd,pn,(LPTSTR)(LPCTSTR)m_devicename,NULL,print,DM_IN_BUFFER|DM_OUT_BUFFER);  
  bOk=::ClosePrinter(pn);  
  if(!bOk)  
  {  
  free(print);  
  return   ;  
  }  
  free(print);Top

8 楼cn2000(菜鸟2000)回复于 2001-06-26 21:26:19 得分 0

谢谢,我式一下。Top

9 楼cn2000(菜鸟2000)回复于 2001-06-27 22:33:27 得分 0

vcmfc   你好,我在单文档的程序中直接运行了该函数但是在打印预览中还是显示A4纸这是怎么会事呢。Top

相关问题

  • 通过代码怎么控制打印纸张的长度和宽度?
  • datawindow打印纸张设置?
  • 自动设置打印纸?
  • ActiveReport 定义打印纸张大小!
  • 关于打印纸张的问题?
  • 如何动态地设置打印纸
  • 打印纸张在哪里设置呢?
  • 打印纸张问题,很急!
  • 80列打印纸怎样选?
  • 请问打印纸张的名称?

关键词

  • null
  • pmode
  • strdrivername
  • strprintername
  • strportname
  • lpmsgbuf
  • devicename
  • devmode
  • lptstr
  • prn

得分解答快速导航

  • 帖主:cn2000
  • panda_w
  • vcmfc

相关链接

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

广告也精彩

反馈

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