Windows的打印是脱机后台打印的,一般情况下,应用程序把打印任务交给操作系统后就不管了,由操作系统去完成打印的。如果你要记录打印的次数,可以重载OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)成员函数,在此加入你的计数功能。要等打印机返回成功的信息,那你的计算机要等待很长的时间了,看来只有直接读打印端口了。

解决方案 »

  1.   

    如果要获取打印对话框的确定的返回值,可以在重载OnBeginPrinting中进行计数,一个完整的打印循环如下:
    CMyView::OnPreparePrinting
      ↓
    CMyView::OnBeginPrinting
       ↓
    CDC::StartDoc
      ↓
    CMyView::OnPrepareDC ←—————┐    
      ↓               |
    CDC::StartPage          │  
      ↓              │ 
    CMyView::OnPrint         | 
      ↓              │           
    CDC::EndPage →----------------┚
      ↓
    CDC::EndDOC
      ↓
    CMyView::OnEndPrinting