WEB开发网
开发学院软件开发VC 使用MFC编写打印程序 阅读

使用MFC编写打印程序

 2010-06-23 20:40:50 来源:WEB开发网   
核心提示:而以 OnPrint 最为复杂,它是我们要写大量代码实现我们打印功能的地方,使用MFC编写打印程序(2),对于默认的OnPrint实现是调用CView的OnDraw,也就是和绘制视图类的客户区的内容完全相同的方法来在打印机上绘图,本文还针对该方法给出了一个示例代码,代码来自Jeff Prosise 的《MFC wind

而以 OnPrint 最为复杂,它是我们要写大量代码实现我们打印功能的地方。对于默认的OnPrint实现是调用CView的OnDraw,也就是和绘制视图类的客户区的内容完全相同的方法来在打印机上绘图。实际中我们在两种地方绘图的内容是完全不同的,可能用户在客户区绘的是一个曲线,而在打印机上要绘制表格和数据。OnPrint(CDC* pDC, CPrintInfo* pInfo)的第二个参数是一个CPrintInfo类型的指针,我们可以从这个指针指向的对象中获得很多信息,如总共的页数,当前的页数,这在打印页眉页脚时可能是很有用的信息。CPrintInfo的定义如下:

struct structCPrintInfo // Printing information structure
{
  CPrintInfo();
  ~CPrintInfo();
  CPrintDialog* m_pPD;   // pointer to print dialog
  BOOL m_bDocObject;    // TRUE if printing by IPrint interface
  BOOL m_bPreview;     // TRUE if in preview mode
  BOOL m_bDirect;     // TRUE if bypassing Print Dialog
  BOOL m_bContinuePrinting;// set to FALSE to prematurely end printing
  UINT m_nCurPage;     // Current page
  UINT m_nNumPreviewPages; // Desired number of preview pages
  CString m_strPageDesc;  // Format string for page number display
  LPVOID m_lpUserData;   // pointer to user created struct
  CRect m_rectDraw;    // rectangle defining current usable page area
  // these only valid if m_bDocObject
  UINT m_nOffsetPage;   // offset of first page in combined IPrint job
  DWORD m_dwFlags;     // flags passed to IPrint::Print
  void SetMinPage(UINT nMinPage);
  void SetMaxPage(UINT nMaxPage);
  UINT GetMinPage() const;
  UINT GetMaxPage() const;
  UINT GetFromPage() const;
  UINT GetToPage() const;
  UINT GetOffsetPage() const;
};

OnBeginPrinting()通常用来设定要打印的总页数,以及一些和页面尺寸有关的初始化工作,在OnBeginPrinting()中设定打印的页数是必要的,默认的页数是只有一页,如果开发人员打印的页数大于1,则必须在此函数中设定打印的页数。然后在OnPrint(CDC* pDC, CPrintInfo* pInfo)中用pInfo-> m_nCurPage获取当前的页码,根据当前的页码打印该页相应的内容。OnEndPrinting用来释放在OnBeginPrinting中申请的资源,如果没有申请,则不需重载该函数。

关于打印预览只需要将自己的执行打印预览功能的命令ID和CView::OnFilePrintPreview关联起来就行了,具体方法是在用户的视图类的MessageMap中加入:

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview);

其中ID_FILE_PRINT_PREVIEW是默认的ID,开发人员也可以使用自己的ID。其实只要重载了OnPrint函数,在打印和打印预览中就可以重用该函数了。到现在为止,相信读者已经对利用MFC的文档视图结构来实现一个包含打印和打印预览功能的程序有了一个总体的认识了,本文还针对该方法给出了一个示例代码,代码来自Jeff Prosise 的《MFC windows程序设计》,见参考文献[1]。

上一页  1 2 3 4  下一页

Tags:使用 MFC 编写

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接