3734|8

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC下打印的问题 [复制链接]

我用EVC新建了个单文档带打印功能的工程。想实现直接打印的功能,也就是说在直接按一下打印按钮就可以打印了,不弹出设置的对话框。代码如下。。。




  1. // documentView.cpp : implementation of the CDocumentView class
  2. //

  3. #include "stdafx.h"
  4. #include "document.h"

  5. #include "documentDoc.h"
  6. #include "documentView.h"

  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif

  12. /////////////////////////////////////////////////////////////////////////////
  13. // CDocumentView

  14. IMPLEMENT_DYNCREATE(CDocumentView, CEditView)

  15. BEGIN_MESSAGE_MAP(CDocumentView, CEditView)
  16.         //{{AFX_MSG_MAP(CDocumentView)
  17.                 // NOTE - the ClassWizard will add and remove mapping macros here.
  18.                 //    DO NOT EDIT what you see in these blocks of generated code!
  19.         //}}AFX_MSG_MAP
  20.         // Standard printing commands
  21.         ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
  22. END_MESSAGE_MAP()

  23. /////////////////////////////////////////////////////////////////////////////
  24. // CDocumentView construction/destruction

  25. CDocumentView::CDocumentView()
  26. {
  27.         // TODO: add construction code here

  28. }

  29. CDocumentView::~CDocumentView()
  30. {
  31. }

  32. BOOL CDocumentView::PreCreateWindow(CREATESTRUCT& cs)
  33. {
  34.         // TODO: Modify the Window class or styles here by modifying
  35.         //  the CREATESTRUCT cs

  36.         BOOL bPreCreated = CEditView::PreCreateWindow(cs);
  37.         cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL);        // Enable word-wrapping

  38.         return bPreCreated;
  39. }

  40. /////////////////////////////////////////////////////////////////////////////
  41. // CDocumentView drawing

  42. void CDocumentView::OnDraw(CDC* pDC)
  43. {
  44.         CDocumentDoc* pDoc = GetDocument();
  45.         ASSERT_VALID(pDoc);

  46.         // TODO: add draw code for native data here
  47. }

  48. /////////////////////////////////////////////////////////////////////////////
  49. // CDocumentView printing



  50. BOOL CDocumentView::OnPreparePrinting(CPrintInfo* pInfo)
  51. {
  52.         // default CEditView_WCE preparation
  53.         [color=#FF0000]pInfo->m_bDirect=TRUE;[/color]
  54.         return DoPreparePrinting(pInfo);
  55. }

  56. void CDocumentView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
  57. {
  58.         // Default CEditView_WCE begin printing.
  59.         CEditView::OnBeginPrinting(pDC, pInfo);
  60. }

  61. void CDocumentView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
  62. {
  63.         // Default CEditView_WCE end printing
  64.         CEditView::OnEndPrinting(pDC, pInfo);
  65. }

  66. /////////////////////////////////////////////////////////////////////////////
  67. // CDocumentView diagnostics

  68. #ifdef _DEBUG
  69. void CDocumentView::AssertValid() const
  70. {
  71.         CEditView::AssertValid();
  72. }

  73. void CDocumentView::Dump(CDumpContext& dc) const
  74. {
  75.         CEditView::Dump(dc);
  76. }

  77. CDocumentDoc* CDocumentView::GetDocument() // non-debug version is inline
  78. {
  79.         ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDocumentDoc)));
  80.         return (CDocumentDoc*)m_pDocument;
  81. }
  82. #endif //_DEBUG

  83. /////////////////////////////////////////////////////////////////////////////
  84. // CDocumentView message handlers

复制代码



但是老是提示
D:\test\document\documentView.cpp(73) : error C2039: 'm_bDirect' : is not a member of 'CPrintInfo'

请问是什么问题,或者有什么解决办法??谢谢大家栏

最新回复

void CMyDialog::Print() {     CDC dc;     CPrintDialog printDlg(FALSE);     if (printDlg.DoModal() == IDCANCEL)     // Get printer settings from user         return;     dc.Attach(printDlg.GetPrinterDC());     // Get and attach a printer DC     dc.m_bPrinting = TRUE;     CString strTitle;                       // Get the application title     strTitle.LoadString(AFX_IDS_APP_TITLE);     DOCINFO di;                             // Initialise print document details     ::ZeroMemory (&di, sizeof (DOCINFO));     di.cbSize = sizeof (DOCINFO);     di.lpszDocName = strTitle;     BOOL bPrintingOK = dc.StartDoc(&di);    // Begin a new print job     // Get the printing extents and store in the m_rectDraw field of a     // CPrintInfo object     CPrintInfo Info;     Info.m_rectDraw.SetRect(0,0,                             dc.GetDeviceCaps(HORZRES),                             dc.GetDeviceCaps(VERTRES));     OnBeginPrinting(&dc, &Info);            // Call your "Init printing" function     for (UINT page = Info.GetMinPage();          page 0);   // end page     }     OnEndPrinting(&dc, &Info);              // Call your "Clean up" function     if (bPrintingOK)         dc.EndDoc();                        // end a print job     else         dc.AbortDoc();                      // abort job.     dc.DeleteDC();                          // delete the printer DC } 复制代码  详情 回复 发表于 2009-5-19 14:59
点赞 关注

回复
举报

84

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
从 MFC 3.0 升级到 8.0 后不受支持的 eVC 类的列表

CPrintInfo Members

evc不支持CPrintInfo 的成员
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
哪要如何实现这个功能呢
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
你在这个函数中自己加一个可控的全局变量吧

BOOL CDocumentView::OnPreparePrinting(CPrintInfo* pInfo)
{
    // default CEditView_WCE preparation
    pInfo->m_bDirect=TRUE;替换掉它
    return DoPreparePrinting(pInfo);
}
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
帮助文档上说
Remarks

MFC for Windows CE does not support the following data members of the CPrintInfo class:

CPrintInfo:: m_bDocObject
CPrintInfo:: m_bPreview
CPrintInfo:: m_bDirect
CPrintInfo:: m_nNumPreviewPages
CPrintInfo:: m_nOffsetPage
CPrintInfo:: m_dwFlags
Requirements

  Windows CE versions: 2.10 and later  
  Header file: Declared in Afxext.h



 
 
 

回复

67

帖子

0

TA的资源

禁止访问

6
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
那句代码是我加上去的。去掉了是能打印,但是会出现Print对话框。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
EVC是不支持这个数据成员把,是否还有其他方法吗??
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 

  1. void CMyDialog::Print()
  2. {
  3.     CDC dc;
  4.     CPrintDialog printDlg(FALSE);

  5.     if (printDlg.DoModal() == IDCANCEL)     // Get printer settings from user
  6.         return;

  7.     dc.Attach(printDlg.GetPrinterDC());     // Get and attach a printer DC
  8.     dc.m_bPrinting = TRUE;

  9.     CString strTitle;                       // Get the application title
  10.     strTitle.LoadString(AFX_IDS_APP_TITLE);

  11.     DOCINFO di;                             // Initialise print document details
  12.     ::ZeroMemory (&di, sizeof (DOCINFO));
  13.     di.cbSize = sizeof (DOCINFO);
  14.     di.lpszDocName = strTitle;

  15.     BOOL bPrintingOK = dc.StartDoc(&di);    // Begin a new print job

  16.     // Get the printing extents and store in the m_rectDraw field of a
  17.     // CPrintInfo object
  18.     CPrintInfo Info;
  19.     Info.m_rectDraw.SetRect(0,0,
  20.                             dc.GetDeviceCaps(HORZRES),
  21.                             dc.GetDeviceCaps(VERTRES));

  22.     OnBeginPrinting(&dc, &Info);            // Call your "Init printing" function
  23.     for (UINT page = Info.GetMinPage();
  24.          page <= Info.GetMaxPage() && bPrintingOK;
  25.          page++)
  26.     {
  27.         dc.StartPage();                     // begin new page
  28.         Info.m_nCurPage = page;
  29.         OnPrint(&dc, &Info);                // Call your "Print page" function
  30.         bPrintingOK = (dc.EndPage() > 0);   // end page
  31.     }
  32.     OnEndPrinting(&dc, &Info);              // Call your "Clean up" function

  33.     if (bPrintingOK)
  34.         dc.EndDoc();                        // end a print job
  35.     else
  36.         dc.AbortDoc();                      // abort job.

  37.     dc.DeleteDC();                          // delete the printer DC
  38. }
复制代码
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表