背景:
我现在正在尝试通过GDI Print API进行打印,它看起来像这样:
StartDoc(hDC,&docinfo)
foreach page in page_buf
StartPage(hDC)
/* write the page to printer DC */
EndPage(hDC)
EndDoc(hDC)
问题:
在打印过程中会有一个通知区域图标,单击它会出现一个小窗口,显示指定打印机上的当前打印作业。
通过右键单击打印作业并选择Cancel
,将取消打印作业。但是我的应用程序会继续向打印机 DC 发送数据,直到处理完所有页面,并且状态Deleting - Spooling
在完成之前一直显示。
我想要的是在选择取消后立即停止打印过程。
我试过的:
1.首先我认为取消作业后设备内容会变得无效(这当然不是真的),并尝试检查 and 的返回StartPage
值EndPage
。然后我发现他们在取消打印作业后都没有失败。
2. 我也试过SetAbortProc
and DocumentEvent
,发现它们不是我想要的。
但是我想当打印作业被取消时应该有一些机制来指示我的应用程序。如果有人试图提供帮助,我们将不胜感激。