友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第226章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




         CString GetDeviceName() const;  // return device name 

         CString GetPortName() const;    // return output port name 

         HDC GetPrinterDC() const;       // return HDC (caller must delete) 

         HDC CreatePrinterDC(); 

         。。。 

 }; 



  如果必要(从命令列参数中得知要直接打印某个文件到打印机上),利用::CreateDC 



   产生一个「打印机DC 」,并做打印动作。注意,printInfo 。m_bDirect 被设为TRUE,表 



   示跳过打印对话框,直接打印。 



                                                                                      677 


…………………………………………………………Page 740……………………………………………………………

                      第篇    深入  MFC  程式設計    



                       OnPreparePrinting 是一个虚拟函数,所以如果CView 的衍生类别改写了它,控制权 



                        就移转到衍生类别手中。本例将移转到CScribbleView 手中。 



                        CScribbleView::OnPreparePrinting 的预设内容(AppWizard  自动为我们产生)是调用 



                        DoPreparePrinting ,它并不是虚拟函数,而是CView 的一个辅助函数。以下是其调用堆 



                        叠,直至【打印】对话框出现为止。 



                            CView::OnFilePrint 

                            CView::OnFilePrint   (in VIEWPRNT。CPP) 



                                CScribbleView::OnPreparePrinting     (in SCRIBVW。CPP) 

                                 CScribbleView::OnPreparePrinting 



                                      CView::DoPreparePrinting     (in VIEWPRNT。CPP) 

                                       CView::DoPreparePrinting 



                                            CWinApp::DoPrintDialog    (in APPPRNT。CPP) 

                                             CWinApp::DoPrintDialog 



                                                 CWinApp::UpdatePrinterSelection      (in APPPRNT。CPP) 

                                                  CWinApp::UpdatePrinterSelection 



                                                       CPrintDialog::GetDefaults   (in DLGPRNT。CPP) 

                                                        CPrintDialog::GetDefaults 



                                                             ::PrintDlg  (Win32 API) 

                                                              ::PrintDlg 



                                                 CPrintDialog::DoModal     (in DLGPRNT。CPP) 

                                                  CPrintDialog::DoModal 



                                                       ::PrintDlg   (Win32 API) 

                                                        ::PrintDlg 



                      CView::DoPreparePrinting 将贮存在CPrintInfo 结构中的对话框CPrintDialog* m_pPD 



                      显示出来,借此收集使用者对打印机的各种设定,然后产生一个「打印机DC 」,储存在 



                     printinfo。m_pPD…》m_pd。hDC  之中。 



                       如果使用者在【打印】对话框中选按【打印到文件】,则再显示一个【Print to File 】 



                         对话框,让使用者设定档名。 



678 


…………………………………………………………Page 741……………………………………………………………

                                                             第 12 章    列印與預樱А�



 接下来取文件名称和输出设备的名称(可能是打印机也可能是个文件),并产生一个 



  DOCINFO  结构,设定其中的lpszDocName 和lpszOutput 字段。此一DOCINFO  结构 



  将在稍后的StartDoc 动作中用到。 



 如果使用者在【打印】对话框中按下【确定】钮,OnFilePrint 就在堆栈中制造出一 



   个CDC 对象,并把前面所完成的「打印机DC 」附着到CDC 对象上: 



    CDC dcPrint; 

    dcPrint。Attach(printInfo。m_pPD…》m_pd。hDC); 

    dcPrint。m_bPrinting = TRUE; 



 一旦CDC 完成, OnFilePrint 把CDC 对象以及前面的CPrintInfo 对象传给 



  OnBeginPrinting 作为参数。OnBeginPrinting 是CView 的一个虚拟函数,原本什么也没 



  做。你可以改写它,设定打印前的任何初始状态。 



 设定AbortProc 。这应该是一个callback 函数,MFC 有一个预设的简易函数 



   _AfxAbortProc  可兹利用。 



             CView::OnFilePrint (in VIEWPRNT。CPP) 

              CView::OnFilePrint 



                  CDC::SetAbortProc   (macro; defined in AFXWIN1。INL) 

                   CDC::SetAbortProc 



                        ::SetAbortProc  (Win32 API) 

                         ::SetAbortProc 



                                                                                    679 


…………………………………………………………Page 742……………………………………………………………

                   第篇    深入  MFC  程式設計    



                    把父窗口除能,产生【打印状态】对话框,根据文件名称以及输出设备名称,设定对 



                      话盒内容,并显示之: 



                       AfxGetMainWnd()…》EnableWindow(FALSE); 

                       CPrintingDialog dlgPrintStatus(this); 

                       。。。 //设定对话框内容 

                       dlgPrintStatus。ShowWindow(SW_SHOW); 

                       dlgPrintStatus。UpdateWindow(); 



                         CView::OnFilePrint  (in VIEWPRNT。CPP) 

                         CView::OnFilePrint 



                              CPrintingDialog::CPrintingDialog (in VIEWPRNT。CPP) 

                              CPrintingDialog::CPrintingDialog 



                                   CDialog::Create (产生对话框) 

                                    CDialog::Create 



                              CWnd::ShowWindow     (显示对话框) 

                              CWnd::ShowWindow 



                    StartDoc 通知打印机开始崭新的打印工作。这个函数其实就是激活Windows 打印引擎。 



                         CView::OnFilePrint 

                         CView::OnFilePrint (in VIEWPRNT。CPP) 



                              CDC::StartDoc    (macro; defined in AFXWIN1。INL) 

                               CDC::StartDoc 



                                    ::StartDoc (Win32 API) 

                                     ::StartDoc 



                    以for  循环针对文件中的每一页开始做打印动作。 



                    调用CView::OnPrepareDC。此函�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!